Página 1 de 1

Código VBA ignora comandos de range/select

Enviado: 10 Mai 2017 às 12:21
por dcmdouglas
tenho uma function que faz uma pesquisa na coluna B e mostra pro usuário as respostas. No final do código eu tento usar métodos como select. activecell ou range("").value e o código ignora os comandos como se nem existissem.

Esse é meu código:

Public Function PesquisaItem( _
ByVal strpesquisa As String, _
ByVal coluna_pesquisa As Range, _
ByVal tipo_pesquisa As Integer) As String
On Error Resume Next
Dim str_result As String
Dim i As Integer
Dim tem_resultado As Boolean
Dim ultima_linha As Integer
Dim linha_leitura As String


End If
'pegamos a última linha preenchida da coluna
ultima_linha = CInt(Range(coluna_pesquisa.Address).End(xlDown).Cells.Row) + 1
str_result = Empty
tem_resultado = False
If strpesquisa <> Empty Then 'se pesquisa foi preenchida
'pecorremos 1 a 1 as células da coluna selecionada em busca de ocorrências
For i = 0 To ultima_linha - 1 Step 1
linha_leitura = Plan1.Cells(i, Range(coluna_pesquisa.Address).End(xlDown).Cells.Column)
'se tipo da pesquisa = 1 (pesquisa exata)
If tipo_pesquisa = 1 Then
If UCase(linha_leitura) = strpesquisa Then
tem_resultado = True

'meucodigo


str_result = cont & "- " & linha_leitura & "*#*" & str_result
cont = cont + 1
End If
Else 'pesquisa ocorrencia contendo a palavra chave
If InStr(1, linha_leitura, strpesquisa) Then
tem_resultado = True
str_result = i & "- " & linha_leitura & vbCrLf & str_result
cont = cont + 1
End If
End If
Next i
'exibe caixa de mensagem com as ocorrências
'pode ser substituído por preenchimento de célula(s) com resultado
If Not tem_resultado Then
MsgBox "nenhuma ocorrência da palavra pesquisada foi encontrada!"
Else

'MsgBox str_result
Dim entrada As Variant
entrada = InputBox(str_result)
Cells(entrada, 1).Select
MsgBox (entrada)


End If
PesquisaItem = "1"
Else
PesquisaItem = "0"
End If

'comando que não funciona exemplo
Range("m1").value = 9

End Function

Código VBA ignora comandos de range/select

Enviado: 10 Mai 2017 às 15:14
por PietroFarias
Tem alguns pontos curiosos. No início tem um END IF Está correto isso?
E como tem um On Error Resume Next no início algum erro pode está ocorrendo pode está ocorrendo no decorrer dos comandos.
Insira um ponto de interrupção na linha onde onde está ultima_linha = CInt(Range... e vai depurando passo-a-passo com o F8.
Para inserir uma linha de interrupção, clica em alguma parte da linha escolhida e pressiona F9.