Я передаю два аргумента диапазона в функции. Один работает нормально, но второй дает ошибку компиляции.Ошибка ошибки VBA при попытке передать диапазон как аргумент
Здесь я вызываю функцию -
Set SourceRange = Sheets("QueryResult").Range("QueryResult")
Set DestinationRange = Sheets("TradeUnderlyingCptyWWRTemplate").Range("CounterpartyName")
Call PopulateDetails(23, SourceRange, DestinationRange, 2, 8)
А вот функция:
Function PopulateDetails(SourceColumns As Integer, Srce As Range, Destination As Range, DestinationColums As Integer, DestinationRows As Integer)
Dim CellName As String
Dim a, b, i As Integer
For b = 0 To DestinationRows - 1
For a = 0 To DestinationColums - 1
On Error GoTo Err:
Sheets("TradeUnderlyingCptyWWRTemplate").Select
Destination.Offset(b, a).Select
CellName = Destination.Offset(b, a).Name.Name
For i = 0 To SourceColumns - 1
If (Destination.Offset(b, a).Name.Name = Srce.Offset(0, i).Value And Destination.Offset(b, a).Value = "") Then
Destination.Offset(b, a).Value = Srce.Offset(1, i).Value
Exit For
End If
Next
Err:
On Error Resume Next
Err.Clear
CellName = ""
Next
Next
End Function
Однако он дает компиляции ошибка:
byref argument type mismatch
с SourceRange
выделены код.
Когда я изменяю функцию только с четырьмя аргументами (удаление аргумента источника), она работает нормально.
Я предполагаю, что у вас есть [ 'Dim SourceRange, DestinationRange As Range'] (HTTP : //stackoverflow.com/q/28238292/11683) где-то, что делает его возможным дубликатом [Ошибка несогласия типа аргумента ByRef "Ошибка VB6] (http: // stackove rflow.com/q/25316331/11683). – GSerg
Да, вы правы, у меня есть Dim SourceRange, DestinationRange как Range в начале кода. Удаление этой строки по-прежнему вызывает такую же ошибку. –
Затем нажмите обе ссылки. – GSerg