Re: [VBA ] 求解視窗輸入問題

作者: paul60209 (我是保羅小小)   2018-09-15 13:13:55
※ 引述《moom7887 (mm)》之銘言:
: 想利用VBA製作一個視窗輸入,視窗會有兩個字元輸入方塊,帶入Excel A欄及B欄,程式
: 碼目前寫出來如下:
: r=Range(“A2”).End(xlDown).Row+1
: Cells(r,”A”)=TextBox1.Text
: Cells(r,”B”)=TextBox2.Text
: 但是一直沒辦法讓輸入的資料從A3開始,而且資料沒辦法自動換行,會一直被覆蓋!
: 是哪個地方出錯了嗎,還是程式碼可以怎麼寫比較好,拜託幫忙了謝謝~
看起來問題分兩塊
1. 資料無法從A3寫入
這題你只提供部分程式碼,我不會通靈,所以也看不出來哪裡有錯,
但我猜你的巨集應該有跨工作表之類的,
建議你用with sheets(1)和end with把你的程式碼包起來,這樣比較不容易出錯!
With sheets("工作表名稱")
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"A")=TextBox1.Text
.Cells(r + 1,"B")=TextBox2.Text
End With
另外,建議你End的參數盡量用(xlUp 或 xlToLeft),
原因是如果遇到資料中間有空白格時,你原先的方法會出錯,
所以乾脆從最下面往上找,比較不會有問題~
提醒一下,1048576是Excel 2013以後的最後一個Row,
如果再更舊版的(副檔名為.xls的),記得把1048576改成65536,
不然會超過索引範圍,然後出錯
2. 資料被覆蓋
這部分看起來就是單純程式設計上的粗心,
你的r只給一次,他算完後就停在r=3,
你也沒寫迴圈,當然他每次回填值的時候都會把r=3直接帶入,
所以你應該在cell那兩行中間重新給r賦值,又或者多宣告一個變數~
With sheets("工作表名稱")
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"A")=TextBox1.Text
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"B")=TextBox2.Text
End With
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-09-16 01:39:00
滑鼠仙請回本位
作者: moom7887 (mm)   2018-09-17 23:50:00
Paul大謝謝你的解說及提醒!

Links booklink

Contact Us: admin [ a t ] ucptt.com