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