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

Dynamisch erzeugte TextBox in UserForm ansprechen?

Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 07:19:22
Kasimir

Hallo an alle Helfer!
Ich habe da ein Problem. Ich erzeuge dynamisch in einer UserForm unter anderem TextBoxen. Nun möchte ich bei der Eingabe oder bei der Übergabe der TextBoxdaten eine bestimmte TextBox auf eine gültige Zeiteingabe prüfen. Der Inhalt der TextBox soll auf „hh:mm“ geprüft werden. Mein Problem ist nun aber, wie spreche ich die TextBox an, das Übergabe der Daten, besser noch bei Eingabe in die TextBox, nach der Zeit geprüft wird?
Ich habe mal die Datei hochgeladen: https://www.herber.de/bbs/user/96236.xlsm
Danke Euch schon mal für die Unterstützung,
Kasimir

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 08:09:42
Nepumuk
Hallo Kasimir,
ohne deine Datei anzusehen ein Ansatz:
Die ColumnHeader-Klasse hat eine Tag-Property. In der kannst du Hinterlegen welcher Datentyp sich in der jeweiligen Spalte deines ListView-Controls befindet. Beim Erstellen der TextBoxen gibst du diese Information an die Tag-Property der TextBox weiter. In deiner UserForm kannst du dann beim Zurückschreiben der TextBoxen die Prüfung entsprechend steuern. Du kannst zwar auch eine just in time Prüfung machen, dazu benötigst du eine Klasse für die TextBoxen, aber ich persönlich halte nichts davon. Bei mir wird immer erst bei der Übernahme der Daten geprüft.
Gruß
Nepumuk

Anzeige
AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 09:07:27
Kasimir
Hallo Nepumuk!
Danke Dir für Deine Antwort, aber leider verstehe ich nur Bahnhof. Kannst Du mir das eventuell etwas vereinfacht erklären?
Wobei ich die TextBoxen nicht über das ListView aus meinem früheren Beitrag erzeugen lasse, sondern beim normalen Aufruf der UserForm in Abhängigkeit wieviele Überschriften ich in dem aktiven Blatt habe (siehe auch Beispieldatei).
Danke und Gruß
Kasimir

AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 09:28:05
Nepumuk
Hallo,
ich dachte das war die Anschlussfrage an die ListView-Frage. Welche TextBox enthält nun was? Die Mappe enthält nämlich 0 Testdaten.
Gruß
Nepumuk

AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 13:21:24
Kasimir
Hallo Nepumuk!
Die Tabelle braucht auch keine Daten enthalten, denn über diese UserForm sollen erst mal nur neue Daten in die Tabelle eingetragen werden. Welche Daten der TextBoxen in welche Spalte eingetragen werden sieht man anhand der Labels vor den TextBoxen.
Gruß,
Kasimir

Anzeige
AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 17:20:38
Nepumuk
Hallo,
ich sehe nur Beträge, sollen also nur Zahlen eingegeben werden? Lass dir nicht alles aus der Nase ziehen.
Gruß
Nepumuk

AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 18:34:30
Kasimir
Hallo Nepumuk!
Sorry, ich wollte keine Umstände machen. In das Feld "Produktkürzel" und "Produktlangtext" soll ein Text eingegeben werden. In das Feld "Erzeugungsdauer" soll eine Zeit im Format "hh:mm" eingetragen werden. In alle anderen Felder werden Beträge eingetragen. Beim Betätigen des Buttons "Daten einfügen" werden die Daten in die entsprechenden Spalten übertragen. Das funktioniert ja auch bereits. Vor dem Übertragen würde ich gerne das Feld "Erzeugungsdauer" auf das richtige Uhrzeitformat prüfen. Nur weiß ich eben nicht, wie ich diese TextBox anspreche.
Danke für die Mühe und Gruß,
Kasimir

Anzeige
AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
09.03.2015 08:45:51
Nepumuk
Hallo,
wenn's also nur um die Prüfung der Uhrzeit geht, dann mach ist das so:
Public Function IsTime( _
        ByVal pvstrTime As String, _
        Optional ByVal opvblnLongTime As Boolean = True) As Boolean

    
    Dim objRegEx As Object
    
    Set objRegEx = CreateObject("VBScript.RegExp")
    
    With objRegEx
        .Global = True
        If opvblnLongTime Then
            .Pattern = "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$"
        Else
            .Pattern = "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$"
        End If
        IsTime = .Test(pvstrTime)
    End With
    
    Set objRegEx = Nothing
    
End Function

Die TextBox für die ID und die Uhrzeit kannst du ja fest verdrahten, die ändern sich ja nicht.
Gruß
Nepumuk

Anzeige
AW: Dynamisch erzeugte TextBox in UserForm ansprechen?
08.03.2015 13:53:28
Daniel
Hi
das während der Eingabe zu prüfen wird vermutlich schwierig, weil du dann für eine dynamisch erzeugte Listbox ein Makro erstellten müsstest.
du könntest so vorgehen:
beim erstellen der Textboxen in Initialize-Event schreibst du dann bei denen, die eine Uhrzeit enthalten müssen einen entsprechenden Hinweistext in die TAG-Eigenschaft (die TAG-Eigenschaft eines Steuerelements ist für den Programmierer frei verfügbar)
vor dem Rückschreiben der Textboxen in die Liste lässt du eine Schleife über alle Steuerelemente laufen und fragst bei den Textboxen den Wert der TAG-Eigenschaft ab.
Enthält diese den Hinweistext auf Uhrzeit, überprüfst du ob die Textbox eine Uhrzeit enthält und wenn ein, brichst du das Rückschreiben mit einem Entsprechenden Hinweistext ab.
Gruß Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige