作者paul60209 (我是保羅小小)
標題Re: [VBA ] 求解視窗輸入問題
時間Sat Sep 15 13:13:55 2018
※ 引述《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
----
最後,如果我的回答沒有解決到你的問題其實是正常的,
因為我也看不太懂你想問什麼,程式碼也給一半,錯誤訊息、
excel檔案格式設計啥都沒有,下次有問題時,
或許你拿滑鼠在桌上敲三下,問土地公會比較快~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.106.235
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1536988438.A.C03.html
1F:→ MOONRAKER: 滑鼠仙請回本位 09/16 01:39
2F:推 moom7887: Paul大謝謝你的解說及提醒! 09/17 23:50