Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1056to1060
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Button aktivieren

Button aktivieren
08.03.2009 13:45:05
Frank
Hallo und 'nen schönen Sonntag!!!
Vielleicht gibt es eine Lösung? In einer UF wird in TextBox5 eine Zahl eingegeben, so 45,67. Nun möchte ich das wenn die Eingabe so erfolgt ist, gleich der CommandButton aktiviert, aber noch nicht ausgelöst wird. Geht das und wenn ja wie?
Die TextBox ist aber bereits mit einem Code belegt!

Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then  ' wenn Punkt getippt
KeyAscii = 44        ' ersetze durch Komma
End If
End Sub


Gruß Frank H.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button aktivieren
08.03.2009 13:53:30
Daniel
Hi
die Textbox kann problemlos mehrere Codes haben, z.B. so was:

Private Sub TextBox5_Change()
Commandbutton1.Enabled = IsNumeric(Textbox5.Text)
End Sub


würde den commandbutton1 nur dann aktivieren (dh. anklickbar machen), wenn in Textbox5 eine Zahl steht.
Gruß, Daniel

AW: Button aktivieren
08.03.2009 14:39:20
Frank
Hi Daniel!
Danke für die schnelle Antwort. Ist aber nicht ganz, dass was ich haben wollte. Wenn die Eingabe in TextBox5 erfolgt ist, soll der Button gleich aktiv sein, dass ich den dahinter befindlichen Code mittels Enter aúslösen kann!!! Ich hoffe das ist zu verstehen?
Danke!!!
Gruß Frank H.
Anzeige
AW: Button aktivieren
08.03.2009 15:03:24
Daniel
Hi
woran kann Excel erkennen, daß die Eingabe in die Textbox abgschlossen ist und nicht noch weitere Zahlen eigegeben werden sollen?
was du ausnutzen könntest wäre folgendes:
wenn du bei der Eingabe in die Textbox auf ENTER oder TAB drückst, wird die Textbox verlassen und das nächste Steuerelement aktiviert.
welches das ist, entscheidet die Steuereelementeigenschaft "TabIndex". Es wird immer das Steuerelement mit dem nächstgrösseren TAB-Index ausgewählt.
(bei Commandbuttons ist das etwas anders, sollte der Commandbutton aktiv sein, löst der druck auf ENTER das CLICK-Makro aus.)
im Prinizp brauchst du also nur der Textbox und dem Commandbutton direkt aufeinanderfolgende TabIndexe zu verpassen und du kannst durch zweimaligen Druck auf Enter das ClickEreignis des Commandbuttons auslösen.
solltes du nur 1x auf Enter klicken wollen, müsstest du den Code vom CLICK-Event in das ENTER-Event des Commandbuttons übertragen.
Dieses würde dann sofort ausgefürt werden, wenn die Textbox verlassen wird, so daß du nur 1x auf ENTER clicken musst.
Gruß, Daniel
ps solltest du nicht mit einer USERFORM sondern mit Steuerelementen direkt auf dem Tabellenblatt arbeiten, heißt das Event nicht ENTER sondern GOTFOCUS
Anzeige
AW: Button aktivieren
08.03.2009 14:50:16
Tino
Hallo,
ich würde es so machen.
Option Explicit
'CommandButton1.Enabled Standart auf False setzen 
Private Sub TextBox5_Change()
    If IsNumeric(TextBox5) And Len(TextBox5) > 0 Then
     Me.CommandButton1.Enabled = True
    Else
     Me.CommandButton1.Enabled = False
    End If
End Sub

'Nur Zahlen zulassen 
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim PunktOderKomma As String
    
    PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
    If KeyAscii = 44 Or KeyAscii = 46 Then
        If InStr(TextBox5, PunktOderKomma) = 0 And Len(TextBox5) > 0 Then
          KeyAscii = IIf("0.5" * 2 = 1, 46, 44)
        Else
          KeyAscii = 0
        End If
     Else
            Select Case KeyAscii
             Case 48 To 57: KeyAscii = KeyAscii
             Case Else: KeyAscii = 0
            End Select
     End If
End Sub


Gruß Tino

Anzeige
AW: Button aktivieren
08.03.2009 14:54:44
Gerd
Hallo Frank,
ergänzend kann im VBA-Editor nach Klick mit der rechten Mouse-Taste auf die Userform die
Aktivierungsreihenfolge der Steuerelemente festgelegt bzw. geändert werden.
Gruß Gerd
Erweiterung
08.03.2009 15:08:06
Tino
Hallo,
mit dem Focus hätte ich auch noch was,
dieser wird automatisch gesetzt wenn 2 Nachkommastellen enthalten sind.
'CommandButton1.Enabled Standart auf False setzen 
Private Sub TextBox5_Change()
Dim PunktOderKomma As String
PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
    If Len(TextBox5) > 0 Then

        If Len(TextBox5) - InStrRev(TextBox5, PunktOderKomma) > 1 And InStr(TextBox5, PunktOderKomma) > 0 Then
         Me.CommandButton1.Enabled = True
         Me.CommandButton1.SetFocus
        Else
         Me.CommandButton1.Enabled = False
        End If
        
    Else
        Me.CommandButton1.Enabled = False
    End If
End Sub

'Nur Zahlen zulassen 
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim PunktOderKomma As String
    
    PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
    
    If KeyAscii = 44 Or KeyAscii = 46 Then
            If InStr(TextBox5, PunktOderKomma) = 0 And Len(TextBox5) > 0 Then
              KeyAscii = IIf("0.5" * 2 = 1, 46, 44)
            Else
              KeyAscii = 0
            End If
     Else
            Select Case KeyAscii
             Case 48 To 57: KeyAscii = KeyAscii
             Case Else: KeyAscii = 0
            End Select
     End If
End Sub


Gruß Tino

Anzeige
AW: Erweiterung
08.03.2009 15:52:43
Frank
Hallo Tino!!!
Echt Super!!! Funzt wie gewünscht!!! Danke!!!
Aber auch allen Anderen DANK!!!
Gruß Frank H.
P.S.: Einen schönen Rest Sonntag noch!!!
AW: Button aktivieren
08.03.2009 15:13:32
Frank
Hallo Tino!!!
Bringt noch nicht das gewünschte Ergebnis, der Button bleibt unberührt und ich muss ihn per Hand auswählen, sprich per Tabulator!!!
Gruß Frank H.
AW: Button aktivieren
08.03.2009 15:18:51
Gerd
Hallo Frank,
wie ist die Einstellung des Commandbuttons in den Eigenschaften bei
"TakeFocusOnClick" ?
Gruß Gerd
AW: Button aktivieren
08.03.2009 15:48:59
Frank
Hallo Gerd!
True!!!
Gruß Frank H.
AW: Button aktivieren
08.03.2009 15:56:05
Gerd
Hallo Frank,
ob es die Lösung ist, kann ich jetzt nicht sagen.
Denn Tino 's Code habe ich nicht getestet. Der läuft aber fast immer.
Stelle die TakeFocusOnClick - Eigenschaft einfach mal auf "False"
u. probiere anschließend nochmal.
Gruß Gerd
Anzeige
AW: Button aktivieren
08.03.2009 15:54:32
Tino
Hallo,
funktioniert alles nicht so richtig wenn es noch mehrere Steuerelemente gibt.
Bin jetzt den Umweg über KeyUp gegangen, etwas besseres fällt mir jetzt nicht ein.
Habe das prüfen auf Zahl noch in eine Funktion ausgelagert.
Private Sub CommandButton1_Enter()
If CommandButton1.Tag = "1" Then Exit Sub
    'Dein Code 
    '... 
    '... 
End Sub

'kleiner umweg über KeyUp 
Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = 13 Then CommandButton1_Enter
End Sub

'CommandButton1.Enabled Standart auf False setzen 
Private Sub TextBox5_Change()
Dim PunktOderKomma As String
PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
  With Me.CommandButton1
    If Len(TextBox5) > 0 Then
        If Len(TextBox5) - InStrRev(TextBox5, PunktOderKomma) > 1 And InStr(TextBox5, PunktOderKomma) > 0 Then
          .Enabled = True
          .Tag = "1"
          .SetFocus
          .Tag = ""
        Else
          .Enabled = False
        End If
        
    Else
          .Enabled = False
    End If
  End With
End Sub

Private Sub TextBox5_KeyPress(ByVal intKeyAsc As MSForms.ReturnInteger)
 intKeyAsc = NurZahlenZulassen(TextBox5, CInt(intKeyAsc))
End Sub

'Funktion zum prüfen einer Textbox ---> Nur Zahlen zulassen 
Private Function NurZahlenZulassen(objTextBox As MSForms.TextBox, intKeyNumber As Integer) As Integer
Dim PunktOderKomma As String
    
    PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
    
    If intKeyNumber = 44 Or intKeyNumber = 46 Then
            If InStr(objTextBox, PunktOderKomma) = 0 And Len(objTextBox) > 0 Then
              NurZahlenZulassen = IIf("0.5" * 2 = 1, 46, 44)
            Else
              NurZahlenZulassen = 0
            End If
     Else
            Select Case intKeyNumber
             Case 48 To 57: NurZahlenZulassen = intKeyNumber
             Case Else: NurZahlenZulassen = 0
            End Select
     End If

End Function


Gruß Tino

Anzeige
AW: TabReihenfolge
08.03.2009 16:31:04
Daniel
Hallo
hier nochmal das Beispiel über die TAB-Reihenfolge:
durch druck auf ENTER wird der Code des Commandbuttons1 ausgelöst.
https://www.herber.de/bbs/user/60103.xls
Gruß, Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige