Problem setting focus to a different textbox

mumps

Well-known Member
Joined
Apr 11, 2012
Messages
14,154
Office Version
  1. 365
  2. 2010
Platform
  1. Windows
I am trying to use the following code to change focus to a different text box on a user form if the value of the active textbox is found in Sheet1. The code works properly if the value is not found but if the value is found, I get this error message: "Unexpected call to method or property access." I have been researching some possible solutions but without success. Any suggestions would be greatly appreciated.
VBA Code:
Private Sub TextBox23_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim fnd As Range
    Set fnd = Sheets("Sheet1").Range("H:H").Find(TextBox23.Value, LookIn:=xlValues, lookat:=xlWhole)
    If fnd Is Nothing Then
        MsgBox ("Not found.")
        TextBox23.Value = ""
        Cancel = True
    Else
        TextBox8.SetFocus
    End If
End Sub
 

Excel Facts

Can Excel fill bagel flavors?
You can teach Excel a new custom list. Type the list in cells, File, Options, Advanced, Edit Custom Lists, Import, OK
hi Mumps actually I have no experience in vba but honestly I tested your code and work for me , if there is the value match textbox23 with in column h then set focus in textbox 8 and if the value is not matched then show the message not found
currently I work office 2016 and I think maybe you have wrong name textbox or what you indicates to textbox 23 or 8 are not existed just guessing:)
 
Upvote 0
Thank you for your suggestion. All the textbox names are correct so I don't think that is the problem.
 
Upvote 0
First thing I do when error with property occur,
I try to delete control and create new control with default properties.
 
Upvote 0
I have test Abdelfattah suggestion with frame and find that this error occur if TextBox8 is in the frame.
If this is your case you need first to set focus to the Frame, and after that to the TextBox8.
VBA Code:
Private Sub TextBox23_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim fnd As Range
    Set fnd = Sheets("Sheet1").Range("H:H").Find(TextBox23.Value, LookIn:=xlValues, lookat:=xlWhole)
    If fnd Is Nothing Then
        MsgBox ("Not found.")
        TextBox23.Value = ""
        Cancel = True
    Else
        Frame1.SetFocus
    End If
    
End Sub


Private Sub Frame1_Enter()

    Me.TextBox8.SetFocus
    
End Sub
 
Upvote 0
Thanks to all for your help. I managed to solve the problem. The error was caused by another "exit" macro event. I would post the code but the changes I had to make involved several other macros.
 
Upvote 0
Solution

Forum statistics

Threads
1,224,919
Messages
6,181,760
Members
453,064
Latest member
robatthe2A

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top