[算表] VBA回传User于UserForm按下哪个按钮?

楼主: foolkids (翼をください)   2018-04-21 06:40:26
软件: Office Excel
版本: 2010
手机发文,排版见谅…
写了一个UserForm,里面有几个CommandButton。
目的是为了取代内定的MsgBox功能。
在使用MsgBox时,可以回传使用者按下的是哪个按钮,但是在自订的UserForm却找不到方式回传…
试了以下方式:
1. 于UserForm里加入一个Label1,每个按钮按下时都会对这个Label赋值。
2. VBA里再令变量 = UserForm1.Label1.Caption
但是无法成功,只会带回Label1的默认值,也就是说关掉UserForm之后,对Label1的赋值就不见了。
想试着在unload UserForm之前就先取变量,但是好像无法?不知道有没有前辈写过类似的需求呢?
作者: newacc (XD)   2018-04-21 08:40:00
要把值存在模组里
楼主: foolkids (翼をください)   2018-04-21 09:30:00
在模组层次宣告变量的意思吗?
作者: soyoso (我是耀宗)   2018-04-21 10:27:00
赋值后,执行vba的流程是?于userform内按下commandbutton?还是以其他方式?
楼主: foolkids (翼をください)   2018-04-21 10:52:00
借由传回的值来在原来sub内决定程序的后续执行,CommandButton只是一个让使用者选择的概念
作者: soyoso (我是耀宗)   2018-04-21 10:53:00
前者,如unload userform写在模组程序内,则改为于commandbutton内传值到程序,就可以unload userform程序(变量)的方式
楼主: foolkids (翼をください)   2018-04-21 10:55:00
我会在CommandButton的程序内将Label赋值后关闭UserForm。
作者: soyoso (我是耀宗)   2018-04-21 10:57:00
抱歉应是 程序名称 变量(或以label1.caption)那流程是从sub内userform.show,让使用者选择后,unload回原sub,可以取得所选取commandbutton的资讯如果是的话sub上方public 变量,按下触发事件内变量 =commandbutton要回传的资讯sub内再引用该变量
楼主: foolkids (翼をください)   2018-04-21 11:08:00
其实我现在确实是在Sub内load userform,待user按下button后,写入label并unload UserForm。回到sub后,设定变量为label.caption。可是好像要在unload前取到变量?可是我找不到在unload前将变量取回到sub的方式…哦哦哦!好喔,我试试看public的方式,谢谢!So大,还是不行耶,已经设定共用变量了,UserForm.Show之后会显示变量未定义,所以继承不过去后来用一个奇怪的方式解决,但是还是想知道有没有更直觉的? 我在CommandButton_Click里去呼叫原模组内的一个sub,这样才可以直接对原模组内的Public变量赋值。
作者: soyoso (我是耀宗)   2018-04-21 13:20:00
https://youtu.be/pqxaFiaFzdg 测试sub userform.showuserform commandbutton按下触发写入变量 unload是可回传所按下commandbutton的caption
楼主: foolkids (翼をください)   2018-04-21 14:19:00
奇怪… 写法一样却没办法重现… 版本问题?阿,我有个地方写错了… SO大的可行,谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com