【问题标题】:How to reference userform click events in VBA如何在 VBA 中引用用户窗体单击事件
【发布时间】:2022-01-26 06:01:25
【问题描述】:

我有一个名为“dataBox”的用户表单,当用户单击命令按钮时会显示该用户表单。然后用户输入数据并在用户窗体上按下 OK 命令按钮以提交数据。

我正在努力解决的问题以及我需要做的是:如果用户单击用户窗体上的“确定”按钮,则会运行一个名为 category2 的子程序。如果用户单击“X”,则不会发生任何事情。

这是我的命令按钮代码

Private Sub CommandButton1_Click()

dataBox.Show
If dataBox.Controls(okCommandButton_Click) Then
category2 Range("A1")
End If

End Sub 

线

If dataBox.Controls(okCommandButton_Click) Then

完全错误,是在 ok click 事件触发时引用的最新尝试,但希望很清楚我想要做什么。我已经在网上搜索了答案,但无法正常工作!谢谢。

【问题讨论】:

  • 你不能只使用inputbox()吗?
  • 嗨,你能详细说明一下吗?我是新手,而且是自学的,所以我的知识存在巨大的漏洞。您是说 commandbutton_click 中的 MsgBox 吗?
  • 我已经发布了一个答案,希望在您的用户表单上为您提供一个有效的替代方案。

标签: vba onclick userform


【解决方案1】:

编辑:您应该在代码中更改一些内容。首先,您最好使用DoCmd 像这样打开您的表单:

DoCmd.OpenForm "dataBox", acNormal

其次,不要在 commandbutton1 的事件中检查按钮是否被按下,而是使用实际事件本身。

Private Sub okCommandButton_Click()
    'Do something/add the data to somewhere
End Sub

如果点击“X”按钮,唯一应该发生的事情就是关闭数据框表单,所以:

Private Sub XButton_Click()
    DoCmd.Close acForm, "dataBox", acSavePrompt
End Sub

有关输入框的信息:我假设您熟悉消息框或msgbox()InputBox() 命令本质上是相同的,但允许您输入数据并对其进行操作。 您的“数据框”表单的设置就像一个输入框。

上面的输入框是这样调用的:

Dim answer as string
answer = Inputbox("I am an inputbox.", "enter data", "enter data here")

可能会出现以下情况:

If you press cancel:
answer = ""

If you press 'X':
answer = ""

If you press OK:
answer = "Value entered in the text line"

下面关于 msdn 的文章可能会提供更多见解; http://msdn.microsoft.com/en-us/library/6z0ak68w(v=vs.90).aspx

【讨论】:

  • 好的,感谢您的扩展。问题是,我需要两个数据字段,看来您只能有一个?因此,我需要两个盒子,而我宁愿只用一个收集两条数据。
  • '其次,不要在 commandbutton1 的事件中检查按钮是否被按下,而是使用实际事件本身'。我试过了,但用户窗体的 ok 按钮单击事件无法识别 'category2 Range("A1")'。这是因为 category2 已被编码为 Private Sub 吗?如果它是“公共订阅”,它会起作用吗?因为这肯定是一个更简单的解决方案。
猜你喜欢
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多