运行时错误“13”:尝试填充文本框

时间:2016-04-19 11:36:18

标签: excel-vba runtime-error vba excel

在尝试填充两个单独的字段时,我收到运行时错误

将文本添加到字段的代码是

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

是否有人对可能导致此错误的原因有任何了解?

2 个答案:

答案 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)

我想出了答案,我使用了两个不同参数的相同名称导致了冲突