Excel 运行时错误';13';:尝试填充文本框时类型不匹配
在尝试填充两个单独的字段时,我收到一个运行时错误 将文本添加到字段的代码为Excel 运行时错误';13';:尝试填充文本框时类型不匹配,excel,runtime-error,vba,Excel,Runtime Error,Vba,在尝试填充两个单独的字段时,我收到一个运行时错误 将文本添加到字段的代码为 Private Sub cmdAddMDS_Click() SetText GetMDS(currentMDS、cboxMDS.Value) 在行中设置CAT catMDS(currentMDS、cboxMDS.Value) SetCat catMDS(currentMDS, cboxMDS.Value) 有两种情况会触发类型不匹配错误: 1) 将参数传递给函数catMDS 2) 将返回的字符串传递给SetCat 由于
Private Sub cmdAddMDS_Click()
SetText GetMDS(currentMDS、cboxMDS.Value)
在行中设置CAT catMDS(currentMDS、cboxMDS.Value)
SetCat catMDS(currentMDS, cboxMDS.Value)
有两种情况会触发类型不匹配错误:
1) 将参数传递给函数catMDS
2) 将返回的字符串传递给SetCat
由于传递给catMDS
的值似乎与传递给GetMDS
的值相同,并且这两个函数具有相同的类型,因此不太可能解释1)。但是--如果SetText
修改了其中一个值,则所有赌注都被取消
因此——2)很可能是这样。由于您尚未透露SetCat
的功能,我们无法知道它会导致错误的原因。您可能希望编辑您的问题以包含该子问题
出于调试目的,您可以按如下方式修改代码:
Private Sub cmdAddMDS_Click()
Dim s As String
SetText GetMDS(currentMDS, cboxMDS.Value)
s = catMDS(currentMDS, cboxMDS.Value)
SetCat s
End Sub
这将把函数调用与子调用分开。最后两行中的一行将抛出错误。哪一行抛出错误将允许您集中调试工作。我找到了答案,我对两个不同的参数使用了相同的名称,这导致了冲突当调试时,如前所述,错误出现在s=catMDS(currentMDS,cboxMDS.Value)
setCat的代码是将单元格内容修改到文本框中,如下所示Sub setCat(ByVal txt作为字符串,可选的append作为布尔值=False)txt=txt&vbNewLine&“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuxuuuuuuuuuuuuuuuuuuuxuuuuuuuuuuuuuxuuuuuuuuuxuuuuuuuuuuuuuuxuuuuuuxuuuuuuxuxuxuxuxuxuxuxuxuxuxuxuxuxuxuxu&txt Else frmMDS.catMDS.Text=txt End If End Sub
很高兴您解决了这个问题。顺便说一下--在出错时继续下一步
很少是个好主意。在Bug隐藏错误时,它经常变成。最好使用显式错误处理,而不是执行VBA等效于从烟雾探测器中取出电池的操作。
Private Sub cmdAddMDS_Click()
Dim s As String
SetText GetMDS(currentMDS, cboxMDS.Value)
s = catMDS(currentMDS, cboxMDS.Value)
SetCat s
End Sub