• 2

Excel VBA請益

各位大大好

近期在碰VBA,遇到一些使用上的問題(目前參照第一次學Excel VBA就上手)
但目前找不到要怎麼處理我的問題
請問是否能將每次表單輸入至excel儲存格的資料,再下次開起的時候自動讀取上次表單輸入的值?
(將特定儲存格的值傳回表單內的Textbox) ,
Excel VBA請益
Excel VBA請益

例如圖片2中的批號 456 789 自動回傳在表單內特定的textbox呢?

因為批號456 789 可能在人員輸入好幾次之後,才會更改下一個批號,因此操作上思考是否有方法可以滿足我的需求?
2020-10-18 21:15 發佈
文章關鍵字 Excel VBA
看無問題,有流程圖?
小揮 wrote:
將特定儲存格的值傳回表單內的Textbox

抱歉,因為樓主您的敘述沒有明確的對應舉例(包括哪個儲存格、對應哪個Textbox.....),所以也只能簡單回復:

以下圖為例:(打開表單,程式自動把A2、B2的資料放在表單中)

以下是程式碼:

Private Sub UserForm_Initialize()
TextBox1.Text = Range("A2")
TextBox2.Text = Range("B2")
End Sub


可以觸發的時機有很多,若是要在表單開啟就執行,可以把程式碼放在 Private Sub UserForm_Initialize()裡面。
另外,也可以把
TextBox1.Text = Range("A2")
改成:
TextBox1.ControlSource = "A2"
這樣會讓TextBox1.Text 和A2 的內容產生連結....當使用者編輯過TextBox1後(切換到別的TextBox),A2的內容會立即改變。(當然,若您有另外設計一個獨立的按鈕來做儲存動作的話,倒是不需用到ControlSource屬性)

小揮 wrote:
批號456 789 可能在人員輸入好幾次之後,才會更改下一個批號,因此操作上思考是否有方法可以滿足我的需求

呃,所以您的需求是?想要使用者進入其他的批號儲存格時,該格能「自動沿襲」上一個批號不變?
~~作法好幾種,因人而異吧?提供樓主您一個方向:


上圖就是在表單程式中,加入:

Private Sub TextBox3_Enter()
TextBox3.Text = TextBox1.Text
End Sub

即可達到上述效果。

以上,提供樓主參考。.........後續有其他問題,可以提出,大家繼續交流~~(當然,可以的話附上您的檔案,也讓版上其他前輩高手們方便處理解答啊......)
Der,misser1
如果簡單到僅是點選自動帶出的話,寫一個IF判斷有無資料,沒有資料自動帶上一個TEXTBOX即可,但TEXTBOX物件很多時,要帶入那一個又是一個問題,以及當很多時,那不就要寫一堆TEXTBOX物件!!!所以物件有物件的問法,總之我才會說,你流程是?才好判斷問題及目的。
Private Sub TextBox3_Enter()
IF TextBox1.Text="" THEN
TextBox3.Text = TextBox1.Text
END IF
End Sub
謝謝兩位大大的回覆,回去再用電腦整理

把我的問題跟需求再說的更清楚

圖1

圖2



問題大概是這樣

圖1上我做了一個簡單的按鈕與VBA,讓人員輸入的資料可以自動往下一列自動依照相對應儲存格填入

我是希望有些會經常重複的內容,可以再點資料輸入(也就是圖1的時候),可以自動將儲存格的值自動帶入TextBox內,如相同人員則無需修改,如有不相同則人員才需要修改。

不知道要怎麼寫,才可以讓Textbox內的值每次自動帶入工作表內儲存格最下一列的值??

也就是圖1黃色螢光的部分,希望可以再按了資料輸入之後,Textbox內容自動帶入,變成圖2黃色螢光的部分

個人覺得這個語法應該跟圖1上的語法類似?

近期才碰VBA,網路上目前也實在找不到相關的寫法,才想說請教各位前輩





不知道這樣各位大大有沒有比較清楚我想要的?
小揮 wrote:
圖1圖2問題大概是這(恕刪)


其實並沒有~~暈。

您確定不把檔案丟上來?(看檔案比較快)
Der,misser1
小揮 wrote:
也就是圖1黃色螢光的部分,希望可以再按了資料輸入之後,Textbox內容自動帶入,變成圖2黃色螢光的部分

1.當您按了[資料輸入],把資料輸入到第5列(If Range("A5")=""....),資料放進去工作表後(應該是最新一列),Textbox的內容應該都還在啊?(保持最新一筆的結果)
2.當您按了[資料輸入],而第5列已經有資料(Else .....),這時應該把游標移到資料最下方,加一列(新的空列),然後把資料放到該列的對應格?(樓主要的是這樣嗎?)

這時樓主的程式碼(Else 後面......),似乎有2個問題?
1.根本沒有必要把最後資料傳回TextBox?
(如我上面所言,目前每個TextBox應該都還保有最後結果,沒清空不是?那何必再去讀取一次?.....而且也沒看到有讀取的語法?是因為樓主還沒想到怎麼使用抓取語法?)

2.定位有問題?
*當執行到:Selection.End(xlDown).Select,游標會移到現有資料最後一列,這時不正是樓主想讀取最後一筆資料的好時機?(但如我前面所述,這步驟根本沒必要啊)
*或者,這時候不是應該把游標再往下一列就好,準備把TextBox的資料寫入到新的空白列?可是樓主用:
ActiveCell.Offset(1, 0).Range("A4").Select
您確定這語法沒錯,是您要的?(以下一列為準,再移動4-1列.......這是哪招?這時是想要做啥??)
然後接著又是:
ActiveCell.Offset(0, 0).Range("A4").Value = Date
暈,要求再往下4-1列,要輸入Date..........

這一連串的操作,我實在不知道樓主想要做啥?(這會導致中間空了好幾列)

所以,會不會是樓主用錯了語法?...........但即使不跳那麼多空列,可是最後一句只加入Date的資料,其他(欄位)卻沒動作?

樓主是否多舉幾步操作?比如,第一次按了[資料輸入],應該會怎樣?然後接著要怎樣....問題是怎樣?.......步驟更多,更清楚一點會更好。

當然,還是強烈建議檔案傳上來(如果無機密問題的話),這樣比較好抓問題並給修改建議....
Der,misser1
謝謝大大的回覆

正因為有考量到機密的問題

我會再另外用一個檔案,弄完再把檔案上傳後,問題

應該就會比較清楚
各位大大好

請參考一下附檔


下載位置


打開的畫面


資料輸入點擊後後面


程式部分



需求:

1.人員點擊資料輸入按鈕後,如第五列為空,則人員輸入資料至textbox後儲存到相對應儲存格 =>這部分沒問題

2.人員存檔關閉檔案後,下次再次點擊資料輸入按扭,是否能讓表單內的textbox自動抓取上次人員輸入的值?

抓完值
,如人員有需修正,修正完後再傳至資料列的下一列。

主要是想減少人員輸入重複資料的時間,剛接觸不久,實在想不到要怎麼寫

再麻煩各位大大協助

另外misser大大回的,其實我還是有點不太懂activecell.offset的用法,我也是發現空列很多之後,再慢慢自

己嘗試,目前使用(-3,0)剛剛好可以符合要求,可以的話,可以稍微跟我說明一下嗎~?

謝謝
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?