Eu estou tentando criar uma função que procura uma seqüência de caracteres (bom) em duas pastas de trabalho diferentes e retorna um valor próximo a essa seqüência de caracteres. Conheço os intervalos nessas pastas de trabalho em que desejo realizar a pesquisa e, em seguida, uso o deslocamento para obter o valor. No entanto, a função retorna um erro #VALUE.
Eu criei funções de pesquisa antes, mas somente dentro da mesma pasta de trabalho, esta é a primeira usando pastas de trabalho diferentes. Talvez você possa me ajudar a encontrar um erro na minha lógica:
Option Explicit
Function findhscode(bom As String)
Dim base1 As Workbook
Dim base2 As Workbook
base1 = Workbooks.Open("path1")
base2 = Workbooks.Open("path2")
If Not base1.Sheets("Sheet1").Range("myRange").Find(bom) Is Nothing Then
findhscode= base1.Sheets("Sheet1").Range("myRange").Find(bom).Offset(0, -7).value
Else
If Not base2.Sheets("Sheet1").Range("myRange").Find(bom) Is Nothing Then
findhscode = base2.Sheets("Sheet1").Range("myRange").Find(bom).Offset(0, 1).value
Else
findhscode= "Please contact Imports for assistance"
End If
End If
End Function
microsoft-excel-2007
vba
Ruben
fonte
fonte
base1
ebase2
semSet
trabalho?Respostas:
Eu tentei o seu código. Para fazê-lo funcionar, você precisa - como semana sugere - definir as variáveis base1 e base2. Caso contrário, você receberá um:
Variável de objeto ou Com variável de bloco não definida erro.
Também ajudaria (embora não esteja causando o problema) se você atribuísse o tipo de retorno na função. Como não há nenhum tipo de retorno explícito, o padrão é Objeto. A única outra coisa em que consigo pensar é se você tem caminhos literais para base1 e base2 ou se está usando variáveis. Se variáveis, remova as aspas.
O seguinte código funcionou para mim (com um par MessageBox adiciona para dar algumas informações de depuração):
Eu chamei isso de um simples subbox inputbox:
Nota: a mensagem de erro #Value geralmente indica um erro de tipo de dados. Você verificou que não está tentando fazer um cálculo matemático com dados de texto?
Também (só porque você menciona o valor requerido é 'próximo a essa string'). Sua primeira chamada offset é de sete colunas para a esquerda dessa string.
fonte