/ / Excel VBA Range objeto como parâmetro - excel, vba, excel-vba

Objeto Excel VBA Range como parâmetro - excel, vba, excel-vba

Eu escrevi essa macro VBA muito curta no Excel, que passa 2 objetos Range para minha própria função. Este é o código inteiro:

Sub Cmp()

Dim OneMatch As Boolean
Dim NoMatches As Integer
Dim OneCell, TwoCell As Range

For Each OneCell In Range("X030Pols").Cells
OneMatch = False: NoMatches = 0

For Each TwoCell In Range("X206Pols").Cells

TwoCell.Offset(0, 23).Value = 0

Next

For Each TwoCell In Range("X206Pols")
If TwoCell.Offset(0, 22).Value = "" Then
TwoCell.Offset(0, 23).Value = PolComp(OneCell, TwoCell)
If TwoCell.Offset(0, 23).Value > 0 Then
NoMatches = NoMatches + 1
End If
End If
Next

If NoMatches = 1 Then
TwoCell.Offset(0, 22).Value = OneCell.Offset(0, -1).Value
OneCell.Offset(0, 22).Value = TwoCell.Offset(0, -1).Value
End If
Next

End Sub
Private Function PolComp(Acell As Range, Bcell As Range) As Integer

If Left(Acell.Offset(0, 1).Value, 4) = Left(Bcell.Offset(0, 1).Value, 4) Then
PolComp = PolComp + 50
End If

If Acell.Offset(0, 6).Value = Bcell.Offset(0, 6).Value And Acell.Offset(0, 6).Value <> "" Then
PolComp = PolComp + 50
End If

If Acell.Offset(0, 8).Value = Bcell.Offset(0, 8).Value Then
PolComp = PolComp + 50
End If

End Function

mas quando tento executá-lo, recebo este erro:

insira a descrição da imagem aqui

Portanto, o OneCell é definido como um intervalo, minha função usa um intervalo, mas há uma incompatibilidade. O erro ocorre quando ele tenta analisar meu código antes de executar qualquer coisa.

Eu poderia resolver isso, mas estou mais preocupado em entender o que fiz de errado.

Respostas:

5 para resposta № 1

O problema está na sua declaração de variável:

Dim OneCell, TwoCell As Range

É o mesmo que escrever:

Dim oneCell as Variant
Dim TwoCell as Range

Em vez de:

Dim oneCell as Range
Dim TwoCell as Range

Ou:

Dim OneCell as Range, TwoCell As Range

Para que o VBA não precise adivinhar o seu tipo.