Почему я получаю ошибку несоответствия типов при совпадении типов? - PullRequest
0 голосов
/ 25 июня 2019

Я получаю ошибку "Несоответствие типов" при вызове функции, даже если тип, кажется, совпадает.

Я пытаюсь вызвать функцию с аргументами и преобразовываю ее в правильныйТип.

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, а другой уже содержит строку.

Ошибка исходит именно от CStr(element), потому что, когда я наведу на нее курсор, он говорит CStr(element) = < Type Mismatch>.Я так растерялся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...