VBA(excel) - 如何提供UserForm文本框功能?

时间:2015-07-24 17:29:02

标签: excel vba excel-vba textbox userform

我有一个sub用于清除userform文本框中的值,但我尝试将其转换为函数,以便我可以将它与多个userforms一起使用。

这是我的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

尝试执行返回“Type missmatch”错误。

我将其设置为用户表单和文本框。我做错了什么?

谢谢你:)

2 个答案:

答案 0 :(得分:0)

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

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中没有包含表单的测试模块。)

答案 1 :(得分:0)

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

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

    Debug.Print TypeName(frmBigInputbox)
    
  2. 如果TextBox是passform的子项,请告诉VBA:

    Set inputtext = passform.frmBigInputBox