Estou com um problema no código que quando dou ENTER em uma textbox vazia ele redireciona-me para o código com uma mensagem de erro, como eu posso fazer para ele não me redirecionar para o código, e mandar uma mensagebox com uma mensagem de erro.
Option Explicit
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Call Filtro(TextBox1.Text, ComboBox1.Text)
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Call Filtro(TextBox2.Text, ComboBox2.Text)
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Call Filtro(TextBox3.Text, ComboBox3.Text)
End Sub
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Relatório!C1:C11"
ComboBox2.RowSource = "Relatório!C1:C11"
ComboBox3.RowSource = "Relatório!C1:C11"
End Sub
Sub Filtro(ByVal Pesquisar_Imo As String, Campo As String)
Dim Coluna As Integer
Dim Area As Range
Set Area = ThisWorkbook.Sheets("Dados_Imobilizado").[A1:K1]
Coluna = WorksheetFunction.Match(Campo, Area, 0)
If Pesquisar_Imo <> "" Then
If IsNumeric(Pesquisar_Imo) = False Then Pesquisar_Imo = "*" & Pesquisar_Imo & "*"
Call Area.AutoFilter(Field:=Coluna, Criteria1:=Pesquisar_Imo)
Call CopiaTabela
Call PreencheListBox
End If
End Sub
Sub CopiaTabela()
ThisWorkbook.Sheets("Auxiliar").[N:X].Clear
ThisWorkbook.Sheets("Dados_Imobilizado").[A1].CurrentRegion.Copy
ThisWorkbook.Sheets("Auxiliar").[N1].PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
Sub PreencheListBox()
Dim Area As Range
Set Area = ThisWorkbook.Sheets("Auxiliar").[N1].CurrentRegion
ListBox1.ColumnCount = Area.Columns.Count
ListBox1.ColumnHeads = True
ListBox1.RowSource = "Auxiliar!" & Area.Offset(1).Address
End Sub
Pergunta
Pedro Miguel Gomes
Estou com um problema no código que quando dou ENTER em uma textbox vazia ele redireciona-me para o código com uma mensagem de erro, como eu posso fazer para ele não me redirecionar para o código, e mandar uma mensagebox com uma mensagem de erro.
Option Explicit Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then Call Filtro(TextBox1.Text, ComboBox1.Text) End Sub Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then Call Filtro(TextBox2.Text, ComboBox2.Text) End Sub Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then Call Filtro(TextBox3.Text, ComboBox3.Text) End Sub Private Sub UserForm_Initialize() ComboBox1.RowSource = "Relatório!C1:C11" ComboBox2.RowSource = "Relatório!C1:C11" ComboBox3.RowSource = "Relatório!C1:C11" End Sub Sub Filtro(ByVal Pesquisar_Imo As String, Campo As String) Dim Coluna As Integer Dim Area As Range Set Area = ThisWorkbook.Sheets("Dados_Imobilizado").[A1:K1] Coluna = WorksheetFunction.Match(Campo, Area, 0) If Pesquisar_Imo <> "" Then If IsNumeric(Pesquisar_Imo) = False Then Pesquisar_Imo = "*" & Pesquisar_Imo & "*" Call Area.AutoFilter(Field:=Coluna, Criteria1:=Pesquisar_Imo) Call CopiaTabela Call PreencheListBox End If End Sub Sub CopiaTabela() ThisWorkbook.Sheets("Auxiliar").[N:X].Clear ThisWorkbook.Sheets("Dados_Imobilizado").[A1].CurrentRegion.Copy ThisWorkbook.Sheets("Auxiliar").[N1].PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub Sub PreencheListBox() Dim Area As Range Set Area = ThisWorkbook.Sheets("Auxiliar").[N1].CurrentRegion ListBox1.ColumnCount = Area.Columns.Count ListBox1.ColumnHeads = True ListBox1.RowSource = "Auxiliar!" & Area.Offset(1).Address End Sub
Link do programa:
https://drive.google.com/file/d/1WTRoJ_4EzZGMsuYPkUoKNjbgCYEIO2TB/view?usp=sharing
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.