Я получаю ошибку "Несоответствие типов" при вызове функции, даже если тип, кажется, совпадает.
Я пытаюсь вызвать функцию с аргументами и преобразовываю ее в правильныйТип.
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>
.Я так растерялся.