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

Format Textboxen

Format Textboxen
15.01.2023 11:38:15
boris
Userbild
Hallo liebe Leute, in dem Screenshot seht Ihr die Userform mit zwölf Textboxen im Frame Schichtmodell, die mit den rot markierten Zellen in der Tabelle durch diese Schliefe befüllt werden.

Sub UnterSubSchichtModellBefüllen() 'L3
Dim TexBoxNrVon, TexBoxNrBis, Spalte, CountSpalte As Byte
TexBoxNrVon = 1: TexBoxNrBis = 12: Spalte = 12: CountSpalte = 0 'SetControlls = "TextBox": SetEnabledValue = "Value"
For Count = TexBoxNrVon To TexBoxNrBis
If CountSpalte = 4 Then Spalte = Spalte + 1
If CountSpalte = 4 Then CountSpalte = 0
CountSpalte = CountSpalte + 1
Me.Controls("TextBox" & Count).Value = Worksheets("stunden").Cells(CountSpalte + 3, Spalte) * -1
Next Count
End Sub
Das funktioniert, nur möchte ich gerne das Format 08:00 in den Textboxen haben. Trotz aller googlerei habe ich wirklich keine Idee wie ich das machen kann.
Weiters wollte ich eigentlich in Me.Controls("Textbox" durch die Varibale SetControlls & count).Value durch die Variable SetEnabledValue ersetzen. Das geht hier leider nicht.
Ich habe eine andere Schliefe in der das geht:

Sub SteuerElementMaschine()
Dim Count As Byte
For Count = CtrlNrVon To CtrlNrBis
Call CallByName(Controls(SetControlls & Count), SetEnabledValue, VbLet, SetWahrFalsch)
Next
End Sub
Die Codezeile Call CallByName(Controls(SetControlls & Count), SetEnabledValue, VbLet, SetWahrFalsch)
Ehlrich gesagt hab ich keine Ahnung was bei den fettgedruckten Codeteilen passiert und was sie bewirken. Und was genau der unterschied zu der oberen Schliefe ist.
Wenn jemand Zeit und eine Idee hat, ich bin gespannt :-) Vielen Dank.
Viele Grüsse Boris, einen schönen Sonntag

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Format Textboxen
15.01.2023 12:37:41
Nepumuk
Hallo Boris,
so:

Controls("TextBox" & CStr(Count)).Value = Format$(Worksheets("stunden").Cells(CountSpalte + 3, Spalte) * -1, "Hh:Nn")
Gruß
Nepumuk
AW: Format Textboxen
15.01.2023 13:32:30
boris
WOW ! Das geht ja wie geschmiert. Ich versuch das mal zuverstehen. Vielen Dank und ein schönes Wochenende Grüsse Boris
AW: Format Textboxen
15.01.2023 12:44:12
ralf_b
du könntest dir mal ansehen was callbyname so macht und die gefragten Ausdrücke sind Variablen, die du im oberen Code auskommentiert hast
'SetControlls = "TextBox": SetEnabledValue = "Value"
https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/callbyname-function
https://learn.microsoft.com/de-de/dotnet/api/microsoft.visualbasic.calltype?view=net-7.0
https://learn.microsoft.com/de-de/dotnet/api/microsoft.visualbasic.constants.vblet?view=net-7.0
der unterschied ist das in der unteren Schleife die Textboxen enabled oder disabled werden.
zumindest legen das die Variablennamen nahe. Wie die tatsächlich gefüllt sind bleibst du uns schuldig.
Und oben wird ein Wert zugewiesen.
Hier eine Idee zum selbst testen.

Sub UnterSubSchichtModellBefüllen()               'L3
Dim TexBoxNrVon, TexBoxNrBis, Spalte, CountSpalte As Byte
TexBoxNrVon = 1: TexBoxNrBis = 12: Spalte = 12: CountSpalte = 0
SetControlls = "TextBox"
SetEnabledValue = "Text"
For Count = TexBoxNrVon To TexBoxNrBis
If CountSpalte = 4 Then Spalte = Spalte + 1
If CountSpalte = 4 Then CountSpalte = 0
CountSpalte = CountSpalte + 1
Call CallByName(Me.Controls(SetControlls & Count), _
SetEnabledValue, _
VbLet, _
Format(Worksheets("stunden").Cells(CountSpalte + 3, Spalte) * -1, "hh:mm"))
'  oder Replace(Worksheets("stunden").Cells(CountSpalte + 3, Spalte).Text, "-", "")
Next Count
End Sub

Wie die tatsächlich gefüllt sind bleibst du uns schuldig.
Anzeige
AW: Format Textboxen
15.01.2023 14:41:18
boris
Hallo ralf, danke für Deine Antwort.
Call CallByName(Controls(SetControlls & Count), SetEnabledValue, VbLet, SetWahrFalsch)
SetControlls gibt ein Steuerelement als String zurück
SetEnabledValue setzt diesen Wert Enabled oder Value als Boolean
SetWahrFalsch setzt diesen Wert True oder False als Boolean
Das Ding wäre wohl nicht unbedingt nötig, gefällt mir aber.
Ich muss sagen, dass ist mein erstes Projekt, ich bin da jetzt vielleicht drei Monaten dran. Musste im Prinzip von Null anfangen. Das ganze hat sich auch explosionartig entwickelt, dem entsprechend muss laufend ein Anfängerfehler ausgemerzt werden. Ich bin da ohne Plan rangegangen.
Und vorallem Dingen verstehe ich die Hilfen vom MS nicht wirklich. Wenn ich mit dem Ding hier fertig bin muss ich erstmal systematisch das ganze VBA lernen.
Ich versuch heute Abend auch mal Deine Variante. Danke nochmals, Grüsse Boris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige