我有一个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”错误。
我将其设置为用户表单和文本框。我做错了什么?
谢谢你:)答案 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
。
我的建议:
使用函数TypeName(object)
检查类型,并确保它实际上是TextBox
:
Debug.Print TypeName(frmBigInputbox)
如果TextBox是passform
的子项,请告诉VBA:
Set inputtext = passform.frmBigInputBox