iT邦幫忙

1

(已解決)按下按鈕後將資料往右邊送

誠如我還在努力學習中

按下按鈕後將資料往右邊送我搜尋了
「吳老師教學部落格」的影片

此處的程式碼為

'按下按鈕時將把輸入的資料往下方送
Private Sub AddNewContentButton_Click()
    r = Range("A90").End(xlDown).Row + 1
    Cells(r,"A" ) = POInputLabel.Text
    Cells(r,"B" ) = ContentInputA.Text
    Cells(r,"C" ) = ContentInputB.Text
    Cells(r,"D" ) = ContentInputC.Text
End Sub

同樣的可以把表單的資料往下面送

但我的需求卻是要把表單資料往右邊送,請參考下方圖片
https://ithelp.ithome.com.tw/upload/images/20200301/20105484mXd6YHOnzf.png

'按下按鈕時將把輸入的資料往右邊送,且是縱向輸出而非此參考影片的橫向輸出
Private Sub AddNewContentButton_Click()
    C = Range("A90").End(xlToRight).Column + 1
    Cells("A", C) = POInputLabel.Text
    Cells("B", C) = ContentInputA.Text
    Cells("C", C) = ContentInputB.Text
    Cells("D", C) = ContentInputC.Text
End Sub

可是卻出現了型態不符合的錯誤
再請大大幫忙啊…

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-03-02 17:09:39
最佳解答

試試看

Sub AddNewContentButton_Click()
    C = Range("A90").End(xlToRight).Column + 1
    Cells(90, C) = POInputLabel.Text
    Cells(91, C) = ContentInputA.Text
    Cells(92, C) = ContentInputB.Text
    Cells(93, C) = ContentInputC.Text
End Sub
rucifa iT邦新手 5 級 ‧ 2020-03-03 17:42:00 檢舉

Hi 大大
您真是太神了,剛好這就是我所需要的功能!!
非常感謝!

1
froce
iT邦大師 1 級 ‧ 2020-03-02 08:23:39

你沒搞懂excel vba基本,這樣下去怎樣都不會改。

Cells的兩個參數分別代表列(row)、欄(column),然後欄位這個參數可以用英文字母代替,但是列卻沒這種用法。
也就是說Cells(1, "A")和Cells(1, 1)一樣代表欄位A1,但是Cells("A", 1)不代表Cells(1, 1),因為excel沒有欄位1A這種表示法。

然後要寫程式的話,通通用數字表示會比較好解決。

https://docs.microsoft.com/zh-tw/office/vba/api/excel.worksheet.cells

rucifa iT邦新手 5 級 ‧ 2020-03-03 17:39:16 檢舉

大大,感謝您的賜教
工作上真的幾乎不太會用到VBA做大量分析(該說公司安逸慣了)╮(╯_╰)╭
是因為最近的新客戶系統無法對接
變成整個重新來過

但我會虛心領教,得在找時間慢慢學這部分

0
goodnight
iT邦研究生 3 級 ‧ 2020-03-02 08:42:33

Private Sub AddNewContentButton_Click()
C = Range("A90").End(xlToRight).Column + 1
Cells(1,c) = POInputLabel.Text
Cells(1,c) = ContentInputA.Text
Cells(1,c) = ContentInputB.Text
Cells(1,c) = ContentInputC.Text
End Sub

這樣的寫法Cells(1,c)會被覆寫,最終只會呈現ContentInputC.Texe

goodnight iT邦研究生 3 級 ‧ 2020-03-02 09:49:11 檢舉

Cells(1,c) = POInputLabel.Text
Cells(1,c+1) = ContentInputA.Text
Cells(1,c+2) = ContentInputB.Text
Cells(1,c+3) = ContentInputC.Text

rucifa iT邦新手 5 級 ‧ 2020-03-03 17:36:10 檢舉

Hi 大大,感謝您的回覆
但目前來看這種寫法會造成同一欄位每次會被覆寫
例如這資料寫入欄位為
C1、D1、E1、F1
每次執行內容則會造成原本C1、D1、E1、F1欄位的內容被覆寫

我要發表回答

立即登入回答