即使类型确实匹配,调用函数时也会出现“类型不匹配”错误。
我试图用参数调用函数,并将其转换为正确的类型。
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>
。我很困惑。