Estou tentando fazer uma macro simples que deve passar por um determinado intervalo de células e retornar uma célula ao lado de uma célula correspondente a algum conteúdo.
De alguns fóruns, encontrei uma linha que deveria funcionar para objetos de célula:
someCell.Offset(0,colIndex)
Mas da depuração eu posso ver que os dados de entrada da seleção são um conjunto de Variant / String e não um objeto "cell".
Existe uma maneira da minha função obter um intervalo de células em vez de Variant / Strings?
Além disso, meu código completo:
Function RVLOOKUP(target, criteriaCellRange, colIndex)
Dim found as Boolean
Dim resultCell as Variant
For Each cell In criteriaCellRange
matchPosition = instr(target,cell)
If matchPosition > 0 Then
found = True
resultCell = cell
Exit For
end if
Next cell
If found Then
' Here resultCell seems to be just a String not an actual cell object
RVLOOKUP = resultCell.Offset(0,colIndex)
else
RVLOOKUP = "#NoMatch"
end if
End Function
ATUALIZADO: O código deve encontrar uma célula de criteriaCellRange que seja uma correspondência exata ou parcial de um texto no destino da célula e retornar a célula com um deslocamento horizontal de colIndex da célula correspondente de criteriaCellRange. Então, basicamente, um VLOOKUP que também corresponde ao texto parcial.
Então ... AQUI temos o mesmo problema, e a resposta confirma minhas suspeitas:
When passing a cell range as a parameter of a function, I believe the
function receives either strings or values. The zero is just the value
of the blank cell. Without seeing your code, it is hard to suggest a
solution to your problem.
BTW Estou usando o Libreoffice 5.4.4.2.