Excel VBA用户窗体怎么调用模块里的变量?

a,b是模块里的变量,用户窗体输入一个数c,计算a+b-c代码如下:插入一个模块:PublicSubf()Statica,ba=3b=4UserForm1.ShowEnd... a,b是模块里的变量,用户窗体输入一个数c,计算a+b-c代码如下:
插入一个模块:
Public Sub f()
Static a, b
a = 3
b = 4
UserForm1.Show
End Sub
插入一个用户窗体,放一个文本输入框和一个命令按钮,命令按钮的click事件:
Public Sub CommandButton1_Click()
If Not IsNumeric(Trim(TextBox1.Value)) Then
MsgBox "输入一个实数"
Exit Sub
End If

Dim c, d
c = Trim(TextBox1.Value)
d = a + b - c
MsgBox "计算结果是" & d
Unload Me
End Sub
随便输入一个数比如8,得到结果-8,表明用户窗体没有调用模块里的变量值,将模块里的变量用static声明也不行,请问该怎么做?
展开
 我来答
百度网友d1ed4a9430
2010-10-17 · TA获得超过1.6万个赞
知道大有可为答主
回答量:6236
采纳率:73%
帮助的人:3538万
展开全部
虽然过程f()是用public定义的,但是Static a, b的作用域只是在f()这个sub中,其他过程是无法访问到的。
如果确实需要的话你可以将a,b的声明用public放在通用:
public a,b
Public Sub f()
a = 3
b = 4
UserForm1.Show
End Sub
或者你可以将声明放在窗体中
而变量的初始化可以放在窗体的Load事件中
private a,b
private sub form1_load()
a=3
b=4
end sub
yjtkgg321
2015-09-01 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:87%
帮助的人:2105万
展开全部
Public pas As Long

Sub qq()
Dim i, st
st = MsgBox("你确定要显示答案?需要正确输入密码", 1)
If st = 1 Then
UserForm1.Show
End If
If st + pas = 3315057 Then
For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Sheet2").Unprotect Password:="3315056"
Cells(i, 5).Formula = "=vlookup(A" & i & ",Sheet2!A:D,4,0)"
Next i
Else
Exit Sub
End If
Sheets("Sheet2").Protect Password:="3315056"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式