[算表] VBA回傳User於UserForm按下哪個按鈕?

看板Office作者 (翼をください)時間8年前 (2018/04/21 06:40), 編輯推噓0(0032)
留言32則, 3人參與, 8年前最新討論串1/1
軟體: Office Excel 版本: 2010 手機發文,排版見諒… 寫了一個UserForm,裡面有幾個CommandButton。 目的是為了取代內定的MsgBox功能。 在使用MsgBox時,可以回傳使用者按下的是哪個按鈕,但是在自訂的UserForm卻找不到方式回傳… 試了以下方式: 1. 於UserForm裡加入一個Label1,每個按鈕按下時都會對這個Label賦值。 2. VBA裡再令變數 = UserForm1.Label1.Caption 但是無法成功,只會帶回Label1的預設值,也就是說關掉UserForm之後,對Label1的賦值就不見了。 想試著在unload UserForm之前就先取變數,但是好像無法?不知道有沒有前輩寫過類似的需求呢? -- ┌─────────────────────────────┐ 就這樣,終於到了啟程的日子。 和來機場送行的朋友們說著玩笑話,其實內心恍恍惚惚像在作夢。 也似乎是因為,為了走到「出發」這一步,耗盡了全部心力。 └─────────────────石田裕輔《不去會死!》─┘ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.102.241 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1524264033.A.A32.html

04/21 08:40, 8年前 , 1F
要把值存在模組裡
04/21 08:40, 1F

04/21 09:30, 8年前 , 2F
在模組層次宣告變數的意思嗎?
04/21 09:30, 2F

04/21 10:27, 8年前 , 3F
賦值後,執行vba的流程是?於userform內按下commandbutton
04/21 10:27, 3F

04/21 10:27, 8年前 , 4F
?還是以其他方式?
04/21 10:27, 4F

04/21 10:52, 8年前 , 5F
藉由傳回的值來在原來sub內決定程序的後續執行,Command
04/21 10:52, 5F

04/21 10:52, 8年前 , 6F
Button只是一個讓使用者選擇的概念
04/21 10:52, 6F

04/21 10:53, 8年前 , 7F
前者,如unload userform寫在模組程序內,則改為於
04/21 10:53, 7F

04/21 10:55, 8年前 , 8F
commandbutton內傳值到程序,就可以unload userform
04/21 10:55, 8F

04/21 10:55, 8年前 , 9F
程序(變數)的方式
04/21 10:55, 9F

04/21 10:55, 8年前 , 10F
我會在CommandButton的程序內將Label賦值後關閉UserForm
04/21 10:55, 10F

04/21 10:55, 8年前 , 11F
04/21 10:55, 11F

04/21 10:57, 8年前 , 12F
抱歉應是 程序名稱 變數(或以label1.caption)
04/21 10:57, 12F

04/21 11:00, 8年前 , 13F
那流程是從sub內userform.show,讓使用者選擇後,unload
04/21 11:00, 13F

04/21 11:02, 8年前 , 14F
回原sub,可以取得所選取commandbutton的資訊
04/21 11:02, 14F

04/21 11:05, 8年前 , 15F
如果是的話sub上方public 變數,按下觸發事件內變數 =
04/21 11:05, 15F

04/21 11:06, 8年前 , 16F
commandbutton要回傳的資訊
04/21 11:06, 16F

04/21 11:07, 8年前 , 17F
sub內再引用該變數
04/21 11:07, 17F

04/21 11:08, 8年前 , 18F
其實我現在確實是在Sub內load userform,待user按下butt
04/21 11:08, 18F

04/21 11:08, 8年前 , 19F
on後,寫入label並unload UserForm。回到sub後,設定變
04/21 11:08, 19F

04/21 11:08, 8年前 , 20F
數為label.caption。可是好像要在unload前取到變數?可
04/21 11:08, 20F

04/21 11:08, 8年前 , 21F
是我找不到在unload前將變數取回到sub的方式…
04/21 11:08, 21F

04/21 11:08, 8年前 , 22F
哦哦哦!好喔,我試試看public的方式,謝謝!
04/21 11:08, 22F

04/21 13:08, 8年前 , 23F
So大,還是不行耶,已經設定共用變數了,UserForm.Show
04/21 13:08, 23F

04/21 13:08, 8年前 , 24F
之後會顯示變數未定義,所以繼承不過去
04/21 13:08, 24F

04/21 13:13, 8年前 , 25F
後來用一個奇怪的方式解決,但是還是想知道有沒有更直覺
04/21 13:13, 25F

04/21 13:13, 8年前 , 26F
的? 我在CommandButton_Click裡去呼叫原模組內的一個su
04/21 13:13, 26F

04/21 13:13, 8年前 , 27F
b,這樣才可以直接對原模組內的Public變數賦值。
04/21 13:13, 27F

04/21 13:20, 8年前 , 28F
測試sub userform.show
04/21 13:20, 28F

04/21 13:21, 8年前 , 29F
userform commandbutton按下觸發寫入變數 unload是可回傳
04/21 13:21, 29F

04/21 13:21, 8年前 , 30F
所按下commandbutton的caption
04/21 13:21, 30F

04/21 14:19, 8年前 , 31F
奇怪… 寫法一樣卻沒辦法重現… 版本問題?
04/21 14:19, 31F

04/21 14:28, 8年前 , 32F
阿,我有個地方寫錯了… SO大的可行,謝謝!
04/21 14:28, 32F
文章代碼(AID): #1QscnXeo (Office)
文章代碼(AID): #1QscnXeo (Office)