- 10 Mai 2017 às 12:21
#23016
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
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