在尝试填充两个单独的字段时,我收到运行时错误
将文本添加到字段的代码是
Private Sub cmdAddMDS_Click()
SetText GetMDS(currentMDS, cboxMDS.Value)
SetCat catMDS(currentMDS, cboxMDS.Value) <-- This creates the runtime error
End Sub
设置要添加的值的Subs几乎相同,只是不同的子名称和偏移量
Function GetMDS(mdsName As Worksheet, templateName As String) As String
Dim Lrow As Long, rng As Range
On Error Resume Next
Lrow = mdsName.Range("A" & Rows.Count).End(xlUp).row
With mdsName.Range("A2:A" & Lrow)
Set rng = .Find(templateName, LookIn:=xlValues)
If Not rng Is Nothing Then
GetMDS = rng.Offset(, 1).Value
End If
End With
End Function
----------------------------------------------------------
Function catMDS(mdsName As Worksheet, templateName As String) As String
Dim Lrow As Long, rng As Range
On Error Resume Next
Lrow = mdsName.Range("A" & Rows.Count).End(xlUp).row
With mdsName.Range("A2:A" & Lrow)
Set rng = .Find(templateName, LookIn:=xlValues)
If Not rng Is Nothing Then
catMDS = rng.Offset(, 3).Value
End If
End With
End Function
是否有人对可能导致此错误的原因有任何了解?
答案 0 :(得分:1)
在第
行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
这会将函数调用与子调用分开。最后两行之一应该抛出错误。哪一行引发错误将使您能够集中精力进行调试。
答案 1 :(得分:0)
我想出了答案,我使用了两个不同参数的相同名称导致了冲突