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

看板Visual_Basic作者 (我是保羅小小)時間6年前 (2018/09/15 13:13), 編輯推噓1(101)
留言2則, 2人參與, 6年前最新討論串2/2 (看更多)
※ 引述《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://www.ptt.cc/bbs/Visual_Basic/M.1536988438.A.C03.html

09/16 01:39, 6年前 , 1F
滑鼠仙請回本位
09/16 01:39, 1F

09/17 23:50, 6年前 , 2F
Paul大謝謝你的解說及提醒!
09/17 23:50, 2F
文章代碼(AID): #1Rd9KMm3 (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #1Rd9KMm3 (Visual_Basic)