Clever-Excel-Forum

Normale Version: VBA Focus in Textbox lassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ich habe in einer UF eine Textbox mit folgendem Code:
Code:
Private Sub TBAnz_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
   If LBArt.Value <> "" Then
       For aBas = 1 To UBound(arrBas(), 1)
           If CStr(arrBas(aBas, 1)) = LBDat.Value Then
               For bBas = 1 To UBound(arrBas(), 2)
                   If CStr(arrBas(1, bBas)) = CStr(LBArt.Value) Then
                       arrBas(aBas, bBas) = TBAnz.Value
                       Exit For
                   End If
               Next bBas
           End If
       Next aBas
   End If
   
   ws.Range(ws.Cells(3, 3), ws.Cells(lz, ls)) = arrBas
   
   With TBAnz
   .SelStart = 0
   .SelLength = Len(.Text)
   End With
End If

End Sub

Was muß geändert werden, um nach drücken der Entertaste, in dieser Textbox zu bleiben und den Inhalt zu markieren? Das der Inhalt markiert ist wenn ich mit den Pfeiltasten wieder reinspringe habe ich ja hinbekommen. Auch mit den Einstellungen der textbox komme ich leider nicht weiter.
Fragen die sich beschäftigen mit Setfocus deuten oft darauf das man ein Userform nich gut strukturiert/entworfen hat.

Wozu brauchst du 'setfocus' und die Markierung des Inhaltes ?
Hallo,

vielleicht mit einer Modulvariablen in Verbindung mit dem Exit-Ereignis der TextBox.

Code:
Private bolReturn As Boolean

Private Sub TBAnz_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If bolReturn Then
    Cancel = True
    With TBAnz
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
    bolReturn = False
End If
End Sub

Private Sub TBAnz_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    bolReturn = True
    If LBArt.Value <> "" Then
        For aBas = 1 To UBound(arrBas(), 1)
            If CStr(arrBas(aBas, 1)) = LBDat.Value Then
                For bBas = 1 To UBound(arrBas(), 2)
                    If CStr(arrBas(1, bBas)) = CStr(LBArt.Value) Then
                        arrBas(aBas, bBas) = TBAnz.Value
                        Exit For
                    End If
                Next bBas
            End If
        Next aBas
    End If

    ws.Range(ws.Cells(3, 3), ws.Cells(lz, ls)) = arrBas

End If

End Sub
Hallo, danke für die antworten.

@snb
die UF war eigentlich für einen etwas anderen Zweck gedacht.(Eingabe von Abrufmengen-    Ablauf  Artikel>Datum>Menge>Datum>Menge usw)

Jetzt benutze ich Sie um wie Lieferungen zu bearbeiten. Dafür gebe ich manchmal werte mehrfach ein um den LKW auszulasten, bzw die Reichweite der Lieferung anzupassen. Und dafür wäre es gut    Menge eingeben-Kontrolle Reichweite und Auslastung-Menge anpassen und wieder kontrolle.

Und dafür wäre gut wenn der Focus in der Listbox bleibt und sogar schon der Inhalt wieder markiert wäre.

@Steffl
kommt Fehler und Excel ist sogar komplett abgeschmiert
Zitat:manchmal werte mehrfach

zwischen welche Werten (min_max) variieren diese Werte ?
Hallo,

(23.05.2017, 09:45)M.Wichmann schrieb: [ -> ]Und dafür wäre gut wenn der Focus in der Listbox bleibt und sogar schon der Inhalt wieder markiert wäre.

@Steffl
kommt Fehler und Excel ist sogar komplett abgeschmiert

was jetzt? TextBox oder Listbox? Und wie lautet die Fehlermeldung?
Ich hab die Datei soweit es erst einmal ging neutralisiert und hochgeladen.

Es geht um die UF1. 

Wenn du dir die ansiehst, ist es möglich die kleine Listbox(Artikel) durch Optionsfelder zu ersetzen ohne viel umzuschreiben? Sonst lass ich es so.


@Steffl
ups verschrieben Textbox natürlich
habe deinen Code eingefügt und die UF stürzt ab wenn ich was eingeben will.
Hallo,

ich bekomme keine Fehlermeldung nachdem ich meine Code von Heute Vormittag in die Userform1 eingefügt habe.
hmm,  ich habe den bereich den ich gepostet habe durch deinen ersetzt. Das war doch richtig oder nicht?
Hallo,

und das Exit-Ereignis der TextBox und die Modulvariable hast Du auch eingefügt?
Seiten: 1 2