繁体   English   中英

VBA(excel)-如何输入UserForm文本框以起作用?

[英]VBA (excel) - How do I feed UserForm Textbox to function?

我有一个子程序,可以清除用户窗体文本框中的值,但是我尝试将其转换为函数,以便可以将其与多个用户窗体一起使用。

这是我的userForm代码(命令按钮代码)

Private Sub pdclear_Click()
    Dim passform As UserForm
    Set passform = NoteEntryForm1

    Dim inputtext As TextBox
    Set inputtext = frmBigInputBox

Call clear(passform, inputtext)
End Sub

这是我的功能

Function clear(passform As UserForm, inputbox As TextBox)
      passform.inputbox.Value = vbNullString
End Function

尝试执行将返回“类型不匹配”错误。

我将其设置为用户窗体和文本框。 我究竟做错了什么?

谢谢 :)

您将函数定义为具有两个参数。 然后在函数中将参数串联起来,就好像一个是另一个的成员一样。 那会产生一个错误。 要解决用户表单上的输入框,请使用:

Function clear(passform As UserForm, inputbox As TextBox)
    passform.Controls(inputbox.Name).Value = vbNullString
End Function

甚至更简单:

Function clear(inputbox As TextBox)
    inputbox.Value = vbNullString
End Function

(由于我没有使用Excel中的表格的测试模块,因此我无法对此进行测试。)

错误Type Mismatch非常明显,您正在将一个声明为TextBox的变量设置为一个显然不是 TextBox的变量。 我的建议:

  1. 使用函数TypeName(object)检查类型,并确保它实际上是TextBox

     Debug.Print TypeName(frmBigInputbox) 
  2. 如果TextBox是该passform的子passform ,则将其告知VBA:

     Set inputtext = passform.frmBigInputBox 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM