Olá amigos,
Infelizmente me deparei com algo que parece uma limitação no uso de funções que eu não conhecia, mas faz sentido.
Não consigo alterar o conteúdo de uma célula que não a própria que chama a função.
Para testar utilizei a função:
Function Teste()
Cells(1, 1) = "teste"
End Function
Digitando =Teste() em qualquer célula que não obviamente a célula A1, e deu o erro de #VALOR!.
Eu até fiz como funcionaria a função, mas infelizmente não funcionará:
Function PROCVVARIOSCEL(ByVal NomePesquisa As String, _
ByVal IntervaloPesquisa As Range, _
ByVal IntervaloRetorno As Range, _
ByVal Ocorrencia As Long)
Dim Nome
Dim k As Integer, i As Integer
Dim lRange As Range
'Recalcula a função em qualquer alteração da planilha
Application.Volatile
'Inicia as variáveis
k = 1
i = 1
'Faz um loop por todo o intervalo de pesquisa
For Each Nome In IntervaloPesquisa
'Se o conteúdo da célula for igual ao valor pesquisado entra nesta condição
If (Nome = NomePesquisa) Then
If k = 1 Then
PROCVVARIOSCEL = IntervaloRetorno(i, 1)
Else
ActiveCell.Offset(k - 1, 0).Select = IntervaloRetorno(i, 1)
End If
If Ocorrencia = k Then GoTo Sair
'Conta a ocorrência da localização do valor
k = k + 1
End If
'Passa para a próxima linha no Range IntervaloRetorno
i = i + 1
'Passa para a próxima célula
Next Nome
Sair:
Exit Function
End Function
A solução para isso é só usando Sub pra fazer isso e fazendo a entrada de dados em células definidas ou usando uma form, mas daí é mais fácil fazer de outra forma.
Vou pensar em algo, e se alguém souber como contornar para referenciar células diferentes á partir de uma função, por favor me avise.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 11/08/2010 9:16 am