Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1584to1588
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

Klassenprogrammierung

Klassenprogrammierung
22.10.2017 14:57:21
Siegfried
Hallo zusammen,
ich habe TextBoxen beim Aufruf einer UserForm in einer Klasse zusammengefasst:
Option Explicit
Dim txtb As Control
Private Sub UserForm_Initialize()
Dim Zähler As Integer
' fasst bestimmte Steuerelemente in einer Klasse (cls_TextBox) zusammen
Zähler = 0
With Frame2
For Each txtb In Frame2.Controls
Zähler = Zähler + 1
ReDim Preserve TextBox(1 To Zähler)
If txtb.Tag = "" Then
Else
Set TextBox(Zähler).TextBox = txtb
End If
Next txtb
End With
End Sub
so weit so gut.
Weiter habe ich in einem allgemeinen Modul die Klasse definiert:
mdl_Klassen
Option Explicit
Public TextBox() As New cls_TextBox
In dem Klassenmodul
cls_TextBox
Option Explicit
Public WithEvents TextBox As MSForms.TextBox
möchte ich mit der folgenden Anweisung eine Aktion starten:
Private Sub TextBox_Change()
Dim n1 As Integer
Dim txtb As Control
Dim BoxNr As Integer
Dim objTextBox As Object
BoxNr = Right(TextBox.Name, Len(TextBox.Name) - 7)
Set objTextBox = Frame2.Controls("TextBox" & BoxNr)
Debug.Print BoxNr, objTextBox, TextBox.Name
End Sub
Die Anweisung führt aber zu nichts.
Was muss ich ändern, damit die Print-Anweisung ausgeführt wird?
Gruß
Siegfried

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenprogrammierung
22.10.2017 15:05:50
Hajo_Zi
Hallo Siegfried,
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster, Test, Mappe, Beispiel, Fehler, Kalender usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.
schaue hier
http://hajo-excel.de/gepackt/vba/userform_steuerelemente.zip

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
.................
22.10.2017 15:10:48
robert
..
AW: Klassenprogrammierung
22.10.2017 15:35:14
Nepumuk
Hallo Siegfried,
versuch es so:
Private Sub TextBox_Change()
    
    Dim BoxNr As Integer
    
    BoxNr = Right(TextBox.Name, Len(TextBox.Name) - 7)
    
    Debug.Print BoxNr, TextBox.Text, TextBox.Name
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Klassenprogrammierung
22.10.2017 15:51:40
Siegfried
Hi Nepumuk
Bei mir funktioniert Dein Vorschlag auch nicht.
Gruß
Siegfried
AW: Klassenprogrammierung
22.10.2017 16:02:26
Nepumuk
Hallo Siegfried,
ich hab das getestet das funktioniert. Was passiert bei dir ein Fehler oder garnichts?
Gruß
Nepumuk
AW: Klassenprogrammierung
22.10.2017 16:06:58
Siegfried
Hi Nepumuk,
bei mir passiert nichts.
Gruß
Siegfried
AW: Klassenprogrammierung
22.10.2017 16:33:50
Luschi
Hallo Siegfried,
bei mir funktioniert Nepumuks vorschlag; aber ich bin mir sicher, daß die folgende Vba-Zeile
If txtb.Tag = "" Then
immer True zurückgibt, weil die Tag-Eigenschaft für die vorhandenen Textboxen keinen Eintrag (also leer! ) haben und somit der Else-Zweig nie ausgeführt wird.
Doch gerade in Else erfolgt doch die Erfassung der Textboxen, die im Klassenmodul 'cls_TextBox' überwacht werden.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Klassenprogrammierung
22.10.2017 16:52:42
Siegfried
Hi Luschi,
vielen Dank,
nachdem ich die Vba-Zeile
If txtb.Tag = "" Then
rausgenommen habe, funktioniert es auch bei mir.
Danke und Gruß
Siegfried
AW: Klassenprogrammierung
22.10.2017 18:10:14
Luschi
Hallo Siegfried,
ich würde diese Vba-Ib-Abfrage nicht rausschmeißen, sondern den Textboxen eindeutige Tag-Werte zuweisen.
Wenn das Projekt wächst (noch mehr oder gruppierte Textboxen usw.), dann ist es immer gut, im Klassenmodul ein eindeutiges Unterscheidungsmerkmal in der Hand zu haben (gerade bei der Gruppierung).
Gruß von Luschi
aus klein-Paris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige