Unable to set focus on Textbox

ipbr21054

Well-known Member
Joined
Nov 16, 2010
Messages
5,216
Office Version
  1. 2007
Platform
  1. Windows
Morning,
The code in use is supplied below.

I enter some text in TextBox8 to be searched for but none was found.
I then see the Msgbox saying NO CUSTOMER WAS FOUND USING THAT INFORMATION
I then click OK to the Msgbox BUT now i wish for TextBox8 to have the text removed of which it does BUT in respect of TextBox8 having the focus applied to it i dont see the flashing vetical line at all.


Rich (BB code):
    Private Sub TextBox8_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
      Dim r As Range, f As Range, cell As String, added As Boolean
      Dim sh As Worksheet
      
      Set sh = Sheets("POSTAGE")
      sh.Select
      With ListBox1
        .Clear
        .ColumnCount = 4
        .ColumnWidths = "220;110;130;10"
        If TextBox8.Value = "" Then Exit Sub
        Set r = Range("B8", Range("B" & Rows.Count).End(xlUp))
        Set f = r.Find(TextBox8.Value, LookIn:=xlValues, lookat:=xlPart)
        If Not f Is Nothing Then
          cell = f.Address
          Do
            added = False
            For i = 0 To .ListCount - 1
              Select Case StrComp(.List(i), f.Value, vbTextCompare)
                Case 0, 1
                  .AddItem f.Value, i                 'col B
                  .List(i, 1) = f.Offset(, 2).Value   'col D
                  .List(i, 2) = f.Offset(, 5).Text    'col G .TEXT is used as date in Listbox was shown as 12/17/2020 as opposed 17/12/2020
                  .List(i, 3) = f.Row                 'row
                  added = True
                  Exit For
              End Select
            Next
            If added = False Then
              .AddItem f.Value                                 'col B
              .List(.ListCount - 1, 1) = f.Offset(, 2).Value   'col D
              .List(.ListCount - 1, 2) = f.Offset(, 5).Text    'col G .TEXT is used as date in Listbox was shown as 12/17/2020 as opposed 17/12/2020
              .List(.ListCount - 1, 3) = f.Row                 'row
            End If
            Set f = r.FindNext(f)
          Loop While Not f Is Nothing And f.Address <> cell
          TextBox8 = UCase(TextBox8)
          .TopIndex = 0
        Else
          MsgBox "NO CUSTOMER WAS FOUND USING THAT INFORMATION", vbCritical, "POSTAGE SHEET CUSTOMER NAME SEARCH"
        End If
      End With
        TextBox8.Value = ""
        TextBox8.SetFocus
      End If
    End Sub
 

Excel Facts

Highlight Duplicates
Home, Conditional Formatting, Highlight Cells, Duplicate records, OK to add pink formatting to any duplicates in selected range.
Instead of deleting TextBox8 content I usually just select the content waiting to be overwritten. Replace
VBA Code:
TextBox8.Value = ""
TextBox8.SetFocus
with
VBA Code:
With Me.TextBox8
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
I think if you delete the value also the focus should still be there
 
Upvote 0
Hi,

Do you mean add it like this ?

Rich (BB code):
            Set f = r.FindNext(f)
          Loop While Not f Is Nothing And f.Address <> cell
          TextBox8 = UCase(TextBox8)
          .TopIndex = 0
        Else
          MsgBox "NO CUSTOMER WAS FOUND USING THAT INFORMATION", vbCritical, "POSTAGE SHEET CUSTOMER NAME SEARCH"
        End If
        With Me.TextBox8
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
     End With
      End With
      End If
    End Sub
 
Upvote 0
After last End With, not before.

Rich (BB code):
End With
With Me.TextBox8
   .SetFocus
   .SelStart = 0
   .SelLength = Len(.Text)
End With
 
Upvote 0
Ok,
So ive inserted it like shown.


I see the Msgbox.
I click on ok but the text is still shown in the Textbox8 & no focus is applied

Rich (BB code):
            If added = False Then
              .AddItem f.Value                                 'col B
              .List(.ListCount - 1, 1) = f.Offset(, 2).Value   'col D
              .List(.ListCount - 1, 2) = f.Offset(, 5).Text    'col G .TEXT is used as date in Listbox was shown as 12/17/2020 as opposed 17/12/2020
              .List(.ListCount - 1, 3) = f.Row                 'row
            End If
            Set f = r.FindNext(f)
          Loop While Not f Is Nothing And f.Address <> cell
          TextBox8 = UCase(TextBox8)
          .TopIndex = 0
        Else
          MsgBox "NO CUSTOMER WAS FOUND USING THAT INFORMATION", vbCritical, "POSTAGE SHEET CUSTOMER NAME SEARCH"
        End If
        End With
        With Me.TextBox8
          .SetFocus
          .SelStart = 0
          .SelLength = Len(.Text)
        End With
        End If
    End Sub
 
Upvote 0
Is the text in TextBox8 get selected? If it does, then you can just key in new input to overwrite.
 
Upvote 0
Have you tried setting the focus to another control and then back to Textbox8 ?
 
Upvote 0
This morning ive removed the setFocus with TextBox8.Value = 123 and it does as shown.
SetFocus not working so i will just put up with it

Thanks for the help
 
Upvote 0

Forum statistics

Threads
1,214,387
Messages
6,119,222
Members
448,877
Latest member
gb24

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