![]() |
Error control?
Hi all, I have put below the code I use to look a number that has been
inputted into textbox1. The problem is when there is an illegal code put in it comes up with the invalid code message box as expected but goes onto the next textbox. I need it to highlight where the mistake was made. Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Dim ans On Error Resume Next ans = Application.Match(CLng(TextBox1.Text), Range("A:A"), 0) If Not IsError(ans) Then TextBox2.Text = Application.Index(Range("B:B"), ans) TextBox3.Text = Application.Index(Range("C:C"), ans) TextBox4.Text = Application.Index(Range("D:D"), ans) TextBox5.Text = Application.Index(Range("E:E"), ans) Else MsgBox "Invalid code" End If On Error GoTo 0 End Sub How do I do this? Thanks in advance Greg |
Error control?
You can get to those other values (in column B, C, D, and E) via VBA techniques
and I added that check for isnumeric() just in case. And I used the _exit event--"cancel = true" if there's an error: Option Explicit Private Sub CommandButton1_Click() Unload Me End Sub Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim ans As Variant With Worksheets("sheet1") If IsNumeric(Me.TextBox1) Then ans = Application.Match(CLng(Me.TextBox1.Text), .Range("A:A"), 0) Else ans = Application.Match(Me.TextBox1.Text, .Range("a:a"), 0) End If If Not IsError(ans) Then Me.TextBox2.Text = .Range("B:B")(ans) Me.TextBox3.Text = .Range("C:C")(ans) Me.TextBox4.Text = .Range("d:d")(ans) Me.TextBox5.Text = .Range("e:e")(ans) Me.Label1.Caption = "" Else Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.Label1.Caption = "Invalid Code" Cancel = True End If End With End Sub Private Sub UserForm_Initialize() Me.Label1.Caption = "" End Sub (I also added a label right above textbox1 to show any error messages. It makes life a little simpler.) Greg wrote: Hi all, I have put below the code I use to look a number that has been inputted into textbox1. The problem is when there is an illegal code put in it comes up with the invalid code message box as expected but goes onto the next textbox. I need it to highlight where the mistake was made. Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Dim ans On Error Resume Next ans = Application.Match(CLng(TextBox1.Text), Range("A:A"), 0) If Not IsError(ans) Then TextBox2.Text = Application.Index(Range("B:B"), ans) TextBox3.Text = Application.Index(Range("C:C"), ans) TextBox4.Text = Application.Index(Range("D:D"), ans) TextBox5.Text = Application.Index(Range("E:E"), ans) Else MsgBox "Invalid code" End If On Error GoTo 0 End Sub How do I do this? Thanks in advance Greg -- Dave Peterson |
Error control?
Thank you Dave
Greg |
All times are GMT +1. The time now is 02:21 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com