Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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

Textbox an Sub übergeben

Textbox an Sub übergeben
11.06.2018 21:35:31
Jan
Liebe Excel-Götter,
ich stehe mal wieder vor einer banalen Aufgabe, die vermeintlich doch schnell gelöst sein sollte. Vermutlich stelle ich mich wieder mal zu doof an...
In meinem VBA-Projekt habe ich etliche Combo- und Textboxen. Nun sollen diese je nach Eingabe des Anwenders disabled oder enabled werden. Spätestens beim dritten Mal denk ich mir, kann ich doch ein Sub draus machen. Für Comboboxen funktioniert das auch problemlos:

Sub DisableListBoxes(TargetList As ComboBox)
With TargetList
.Enabled = False
.BackColor = Functions.RGBCode("inactive")
End With
End Sub
Aufruf:

Call DisableListBoxes(Combobox)
Naiv wie ich bin, dachte ich mir, das geht doch mit Textboxen sicher genauso:

Sub DisableListBoxes(TargetBox As TextBox)
With TargetBox
.Enabled = False
.BackColor = Functions.RGBCode("inactive")
End With
End Sub
Beim Auruf kommt es jedoch immer zu der Meldung 'Typen unverträglich'. Führe ich dagegen den Code direkt in der UserForm aus, dann meckert Excel nicht (so wie hier):

With TxtBox
.Enabled = False
.BackColor = Functions.RGBCode("inactive")
End With
Habt ihr eine Idee, warum ich die Textbox nicht an ein Sub weitergeben kann, das diesen immer wieder durchzuführenden Code übernimmt?
Vielen Dank und Gruß, Jan

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox an Sub übergeben
11.06.2018 23:34:15
Mullit
Hallo,
das Objekt ist nicht eindeutig, besser gesagt mit Deiner Notation hast Du die Formular-Textbox am Wickel, Du mußt auf die Forms-Bibliothek zugreifen:
Sub DisableListBoxes(TargetBox As MSForms.TextBox)
    With TargetBox
        .Enabled = False
        .BackColor = Functions.RGBCode("inactive")
    End With
End Sub

Gruß, Mullit
AW: Textbox an Sub übergeben
12.06.2018 00:02:40
Daniel
Hi
wenn du in einer Userform arbeitest, dann kannst du als Übergabeparameter auch den Typ "Control" verwenden. Dann kannst du das gleiche Makro Textbox, Combobox und weitere Controls verwenden, du musst halt nur darauf achten, dass du nur Eigenschaften änderst, die für alle Controls gültig sind:

Private Sub CommandButton1_Click()
Call ControlAus(ComboBox1)
Call ControlAus(TextBox1)
Call ControlAus(ListBox1)
End Sub
Sub ControlAus(crt As Control)
crt.Enabled = False
crt.BackColor = vbBlack
End Sub

man könnte das auch so erweitern, dass du mehrere Controls mit einem Befehl ausschalten kannst:
Private Sub CommandButton1_Click()
Call ControlAus(ComboBox1, TextBox1, ListBox1)
End Sub
Sub ControlAus(ParamArray crtls() As Variant)
Dim c
For Each c In crtls
c.Enabled = False
c.BackColor = vbBlack
Next
End Sub
kleiner Nachteil bei beiden Varianten:
da man nicht mehr auf einen speziellen Objekttyp festgelegt ist, entfällt auch die Unterstützung durch die Intellisense. Man muss dann eben vorher schon wissen, welche Objekteigenschaften man ändern will.
Gruß Daniel
Anzeige
AW: Textbox an Sub übergeben
12.06.2018 20:32:03
Jan
Hallo Mullit, Hallo Daniel,
vielen Dank für eure schnellen Antworten.
@Mullit: Das Voranstellen von MSForms hatte ich bereits schon mal irgendwo gelesen, allerdings hat das bei mir nichts an der Fehlermeldung geändert.
@Daniel: Mit Defitnition als Control klappts super. Mit der Einschränkung kann ich gut leben.
Danke + Gruß, Jan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige