Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
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
If Click in TextBox Then …
17.02.2019 23:25:59
Tobi
Hallo Zusammen,
Ich wäre für Eure Hilfe dankbar. Ich suche folgenden Code:
Wenn ich in irgendeine TextBox oder CheckBox (CheckBox1) klicke, sollen folgende Buttons auf Enabled = False gesetzt werden:
CommandButton1 = “Neu“ in UF1
CommandButton2 = “Löschen“ in UF1
CommandButton4 = “Beenden“ in UF1
CommandButton UF1_Liste = “Liste“ in UF1
“ListBox1“ in UF1
und beim Klicken auf Speichern (CommandButton3) wieder auf Enabled = True
Ich konnte einfach den Code für dieses Click Ereignis nicht finden/erkennen.
Die UF als Link anbei.
Liebe Grüße Tobi
https://www.herber.de/bbs/user/127712.xlsm

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Click in TextBox Then …
18.02.2019 00:06:02
Tobi
Was ich noch erwähnen wollte:
Ich weiß wie das für jede einzelne TextBox funktioniert aber für mehrere TextBoxen und mehrere CommandButtons weiß ich es leider nicht. Am besten wäre doch dass man das mit einer Variablen anspricht, oder? Dafür fehlen mir dann doch noch ein paar Kenntnisse, vielleicht kann jemand weiterhelfen?
Grüße Tobi
AW: If Click in TextBox Then …
18.02.2019 10:01:40
Matthias
Moin!
Du könntest das enablen und ablen in eine eigene Prozedur setzten und beim Enter_Event der TB und CB dann aufrufen. Für jedes Elemente das enabled wird in der Prozedur eine Zeile.
bspw.
Sub deaktivieren()
UF1.Commandbutton1.enabled = false
UF1.Commandbutton2.enabled = false
usw.
End Sub

Aufrufen würdest du es dann nur mit call deaktivieren.
Man könnte das auch mit Klassenprogrammierung machen, dann würdest du dir das Event für jedes TB / CB sparen, dass wäre dann aber komplizierter.
VG
Anzeige
AW: If Click in TextBox Then …
18.02.2019 10:00:52
Nepumuk
Hallo Tobi,
benutze das MouseUp-Event.
Gruß
Nepumuk
AW: If Click in TextBox Then …
18.02.2019 13:07:20
Tobi
Hallo Nepumuk,
danke für den Tipp!
Private Sub TextBox2_MouseUp(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then CommandButton1.Enabled = False
End Sub
Wie packe ich das für diesen Button mit allen TextBoxen in eine Variable?
Für die restlichen CommandButtons würde ich die Variable dann jedes mal separat anwenden.
Bin leider noch nicht so geübt und noch beim lernen was VBA anbelangt.
Liebe Grüße Tobi.
Anzeige
AW: If Click in TextBox Then …
18.02.2019 13:53:27
Nepumuk
Hallo Tobi,
in eine "Variable"? Was meinst du damit?
Du könntest das in eine Klasse packen. Dann hast du eine Prozedur für alle TextBoxen.
Gruß
Nepumuk
AW: If Click in TextBox Then …
18.02.2019 14:15:47
Tobi
Hallo Nepumuk,
sorry ja Du hast Recht, das meinte ich. Es geht einfach darum, dass ich nicht jede einzelne Textbox einzeln ansprechen muss. Ich finde im Netz kein passendes Beispiel.
AW: If Click in TextBox Then …
18.02.2019 15:45:53
Tobi
Hallo Nepumuk,
vielen Dank erstmal für Deine tolle Hilfe !!
In Deiner Datei funktioniert das ohne Probleme. Ich habe die Codes entsprechend angepasst mit dem Klassenmodul, bei mir bringt er eine Fehlermeldung:
Laufzeitfehler 91 ; Objectvariable oder With-Blockvariable nicht festgelegt
und das ganze bei dem Code:
Private Sub DisableCommandButtons()
Dim ialngIndex As Long
For ialngIndex = LBound(maobjCommanButton) To UBound(maobjCommanButton)
maobjCommanButton(ialngIndex).Enabled = False
Next
End Sub
Hierzu eine Frage:
Du hast ab und zu CommanButton geschrieben. Ist das korrekt? Das wird jetzt nicht der Grund für die Fehlermeldung sein aber es fiel mir halt auf.
Die Datei als Link anbei mit den von Dir vorgeschlagenen Codes.
Liebe Grüße Tobi
https://www.herber.de/bbs/user/127732.xlsm
Anzeige
AW: If Click in TextBox Then …
18.02.2019 15:54:00
Nepumuk
Hallo Tobi,
du darfst natürlich nicht einfach einen Index auslassen. Also:
In der Klasse:
Private maobjCommanButton(1 To 3) As MSForms.CommandButton

Im Userform:
Set .CommandButton(3) = CommandButton4

Gruß
Nepumuk
Anzeige
AW: If Click in TextBox Then …
18.02.2019 16:48:11
Tobi
Hallo Nepumuk,
Vielen Dank, so ist es halt, wenn man noch ganz am Anfang steht. Jetzt funktioniert es! Vielleicht seid Ihr das eine oder andere mal genervt von so viel dummen Fragen, aber ich bin eigentlich eher Anwender und kein Profi und will es auch ehrlich gesagt nicht werden.
Eine Frage/Bitte noch:
Ich benötige jetzt nur noch das ganze für die Sperrung der ListBox. Ich habe versucht das vorhandene auf die ListBox anzuwenden aber natürlich funktioniert das nicht so einfach wie man sich das als "Nullblicker" vorstellt. Ist das zu kompliziert für die ListBox?
Grüße Tobi
AW: If Click in TextBox Then …
18.02.2019 17:03:36
Nepumuk
Hallo Tobi,
es gibt keine dummen Fragen. Nur dumme Antworten.
Im UserForm:
Private Sub Userform_Initialize()
    Dim objTextBoxClass As clsTextbox
    Dim objControl As Control
    Set TextBoxClassCollection = New Collection
    For Each objControl In Controls
        If TypeOf objControl Is MSForms.TextBox Then
            Set objTextBoxClass = New clsTextbox
            With objTextBoxClass
                Set .CommandButton(1) = CommandButton1
                Set .CommandButton(2) = CommandButton2
                Set .CommandButton(3) = CommandButton4
                Set .ListBox = ListBox1
                Set .TextBox = objControl
                Call TextBoxClassCollection.Add(Item:=objTextBoxClass)
            End With
            Set objTextBoxClass = Nothing
        End If
    Next
    Dim lzeile As Long, arrList
    With Tabelle1
        arrList = .Range(.Cells(2, 4), .Cells(.Rows.Count, 5).End(xlUp))
    End With
    For lzeile = 1 To UBound(arrList)
        arrList(lzeile, 1) = arrList(lzeile, 2) & ", " & arrList(lzeile, 1)
        arrList(lzeile, 2) = lzeile + 1
    Next
    ListBox1.List = arrList
    ListBox1.Selected(0) = True
End Sub

Im Klassenmodul:
Option Explicit

Private WithEvents mobjTextBox As MSForms.TextBox

Private maobjCommandButton(1 To 3) As MSForms.CommandButton
Private mobjListbox As MSForms.ListBox

Private Sub Class_Terminate()
    Set mobjTextBox = Nothing
    Set mobjListbox = Nothing
    Erase maobjCommandButton
End Sub

Friend Property Get TextBox() As MSForms.TextBox
    Set TextBox = mobjTextBox
End Property

Friend Property Set TextBox(ByRef probjTextBox As MSForms.TextBox)
    Set mobjTextBox = probjTextBox
End Property

Friend Property Get CommandButton(ByVal pvlngIndex As Long) As MSForms.CommandButton
    Set CommandButton = maobjCommandButton(pvlngIndex)
End Property

Friend Property Set CommandButton(ByVal pvlngIndex As Long, ByRef probjCommandButton As MSForms.CommandButton)
    Set maobjCommandButton(pvlngIndex) = probjCommandButton
End Property

Friend Property Get ListBox() As MSForms.ListBox
    Set ListBox = mobjListbox
End Property

Friend Property Set ListBox(ByRef probjListBox As MSForms.ListBox)
    Set mobjListbox = probjListBox
End Property

Private Sub mobjTextBox_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = xlPrimaryButton Then Call DisableCommandButtons
End Sub

Private Sub DisableCommandButtons()
    Dim ialngIndex As Long
    For ialngIndex = LBound(maobjCommandButton) To UBound(maobjCommandButton)
        CommandButton(ialngIndex).Enabled = False
    Next
    ListBox.Enabled = False
End Sub

Ich hatte noch einen Schreibfehler im Code des Klassenmoduls. Also bitte den kompletten Code kopieren.
Gruß
Nepumuk
Anzeige
Nepumuk hat wie so oft geholfen Vielen Dank!!!
18.02.2019 17:58:30
Tobi
Hallo Nepumuk,
das funktioniert alles bestens, ich danke Dir tausend mal für Deine freundliche Hilfe.
Liebe Grüße Tobi.

12 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige