类型匹配时为什么会出现类型不匹配错误?

时间:2019-06-25 16:59:48

标签: vba

即使类型确实匹配,调用函数时也会出现“类型不匹配”错误。

我试图用参数调用函数,并将其转换为正确的类型。

Sub RenameColumns(SheetName As String, ParamArray arrColumns() As Variant)
    Dim element As Variant
    Dim Counter As Integer
    Counter = 8
    For Each element In arrColumns
        If Counter >= 16 Then Exit For
            'Error Type Mismatch occurs in the below line. CsStr(element) = <Type Mismatch >
            Range(GetColumnAddress(CStr(element), SheetName)).Value = arrColumns(Counter) 'Here I am getting error Type Mismatch
            Counter = Counter + 1
    Next element
End Sub


Function GetColumnAddress(ColumnName As String, SheetName As String)
    Dim strSearch As String
    Dim aCell As Range

    Dim sheet As Worksheet
    Set sheet = Sheets(SheetName)

    strSearch = ColumnName

    Set aCell = sheet.Rows(1).Find(What:=strSearch, LookIn:=xlValues, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        GetColumnAddress = aCell.Address
    Else
        GetColumnAddress = "$A$1"     'Error!
    End If
End Function

GetColumnAddress函数接受两个字符串。我正在从RenameColumns子例程发送两个字符串。一个是Variant类型,但是我正在使用CStr将其转换为字符串,而另一个已经是string。

该错误完全来自CStr(element),因为当我将光标移到该错误上时,它说CStr(element) = < Type Mismatch>。我很困惑。

0 个答案:

没有答案
相关问题