Ich bin zwei Bereichsargumente in einer Funktion übergeben. Einer funktioniert gut, aber zweitens gibt Kompilierungsfehler.VBA Complie Fehler beim Versuch, Bereich als Argument übergeben
Hier bin ich den Aufruf der Funktion -
Set SourceRange = Sheets("QueryResult").Range("QueryResult")
Set DestinationRange = Sheets("TradeUnderlyingCptyWWRTemplate").Range("CounterpartyName")
Call PopulateDetails(23, SourceRange, DestinationRange, 2, 8)
Und hier ist die Funktion:
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
Es wird jedoch geben kompilieren Fehler:
byref argument type mismatch
mit SourceRange
hervorgehoben der Code.
Wenn ich die Funktion ändern, um nur vier Argumente zu haben (Löschen Source-Argument), funktioniert es gut.
entspricht Ich nehme an, Sie haben [ 'Dim SourceRange, DestinationRange Als Range'] (http : //stackoverflow.com/q/28238292/11683) irgendwo, was es zu einem möglichen Duplikat von [ByRef Argument Type Mismatch "Error VB6] macht (http: // stackove rflow.com/q/25316331/11683). – GSerg
Ja, Sie haben Recht, ich habe Dim SourceRange, DestinationRange als Range am Anfang des Codes. Das Entfernen dieser Zeile führt immer noch zu demselben Fehler. –
Dann klicken Sie auf beide Links. – GSerg