Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Warum klappt der Code nicht

Forumthread: Warum klappt der Code nicht

Warum klappt der Code nicht
09.11.2025 00:00:00
Frank H.
Hallo und Guten Abend!

Mittes Klick auf eine Befehlsschaltfläche soll folgendes funktionieren:
Zunächst der Code:

Mit Klick auf die Schaltfläche wird das Datum der TextBox25 immer um eins addiert. Also wenn in der TextBox25 der 01.12.2025 steht, wird nach dem Klick
der 02.12.2025 angezeigt.

TextBox25 = CDate(TextBox25) + 1
For lng = 8 To 38
If ActiveSheet.Cells(lng, 1) = CDate(TextBox25) Then
TextBox26 = ActiveSheet.Cells(lng, 3)
End If
Next lng

Jetzt sollte in TextBox26 der entsprechende Wert aus Spalte 3 angezeigt werden.

Es passiert aber nichts.

Ich habe dann 'ne andere Schaltfläche genommen und folgendes hinterlegt:

Dim lng As Long
For lng = 8 To 38
If ActiveSheet.Cells(lng, 1) = CDate(TextBox25) Then
TextBox26 = ActiveSheet.Cells(lng, 3)
End If
Next lng

Da wird dasnn in der TextBox26 der entsprechende und gewünschte Eintrag angezeigt.

Warum klappt das nicht schon mit der ersten Schaltfläche?

Wer weiß Rat?

Danke ikm Voraus!

L.G Frank H.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Warum klappt der Code nicht
09.11.2025 05:23:46
Onur
Ich habe zwar eine Vermutung, aber ohne die/eine Datei zum Testen zu haben, werde ich sie nicht äussern. Poste mal die/eine Datei dazu.
AW: Warum klappt der Code nicht
12.11.2025 16:30:58
Marc
Ich würde erstmal damit anfangen die verschiedenen Textboxen auch der UserForm zuzuordnen, das kann auch deutlich zu Problemen führne

also statt

TextBox26 = "hallo"

UserForm1.TextBox26.Value = "hallo"

Anzeige
AW: Warum klappt der Code nicht
13.11.2025 14:02:52
schauan
... Textboxen, die im Code einer UF enthalten sind, werden bei Fehlen der Angabe der Zuordnung zu einer UF der UF zugeordnet, in der sie enthalten sind.
Wenn sie in dem Fall dort nicht vorhanden sind, führt das zu einem entsprechenden Fehler. Da ist es egal, ob es die anderswo gibt ...
AW: Warum klappt der Code nicht
09.11.2025 09:29:20
Frank H.
Hallo Onur!

Ich bin mit der Datei noch ziemlich am Anfang.
Es ist noch niocht alles so wie es zum Schluss aussehen soll.

https://www.herber.de/bbs/user/179584.xlsm

Danke im Voraus für deine Hilfe!

L.G. Frank
Anzeige
AW: Warum klappt der Code nicht
09.11.2025 12:58:14
schauan
... hast Du oft genug auf die Schaltfläche gedrückt? Wenn das Datum aus TextBox25 nicht in der Liste ist, passiert auch nix. ...
AW: Warum klappt der Code nicht
09.11.2025 13:01:10
Frank H.
Hallöchen,

das Datum ist definitiv in der Liste. Klick auf den anderen Button, da klappts ja auch!

L.G.
AW: Warum klappt der Code nicht
09.11.2025 15:14:03
schauan
... schaue mal genau auf jede Zeile im Code, eventuell siehst Du es jetzt. Ansonsten, lasse den Code mal schrittweise laufen und schaue in die Textbox. Ich denke, spätestens dann siehst Du es ;-) Es hätte hier gereicht, wenn Du den kompletten Code vom Button postest ...

Private Sub CommandButton7_Click()


Dim lng As Long
Dim i As Integer

TextBox25 = CDate(TextBox25) + 1

For lng = 8 To 38

If ActiveSheet.Cells(lng, 1).Value = CDate(TextBox25) Then

TextBox26 = ActiveSheet.Cells(lng, 3)

End If

Next lng

For i = 26 To 34
Me("TextBox" & i) = ""
Me("TextBox" & i).BackColor = &H80000005
TextBox25.BackColor = &H80000005
Next i
End Sub
Anzeige
AW: Warum klappt der Code nicht
09.11.2025 15:56:28
ralf_b
schauan hats jetzt schon gezeigt, aber da ich noch ein paar Anmerkungen habe, poste ichs trotzdem.

du löscht den Eintrag in Textbox26 -29 beim Klick auf den plus oder minus Button. Verwende hier lieber ein Drehfeld als zwei separate Button.
 For i = 26 To 34

' Me("TextBox" & i) = "" 'ich hab die zeile mal auskommentiert
Me("TextBox" & i).BackColor = &H80000005
TextBox25.BackColor = &H80000005
Next i


du könntest bei Änderung in Textbox25 automatisch die andern Felder füllen.
z.b. mit einer Function, die man dann auch in andern Sub's aufrufen könnte z.b. im Initialize.
das Activesheet vor der Range kannst du weglassen wenn du die Userform aus dem betreffenden Blatt öffnest und sie modal ist. d.h. das du das Blatt dann nicht einfach wechseln kannst.

hier zwei Beispiele wie eine Function dafür aussehen kann. Man muß nicht für 3 oder 4 Controls eine Schleife programmieren ,die man nach einer Weile nicht mehr durchschaut. Lesbarer Code hilft mehr als coole Schleifen.

Private Sub TextBox25_Change()

If IsDate(TextBox25) Then fillChangesRow CDate(TextBox25)
End Sub

Function fillChangesRow(dt As Date)
Dim cnt As Long, i As Long

For cnt = 8 To 38 'zeilenzähler
If Cells(cnt, 1) = dt Then
For i = 26 To 29 'controlszähler
With Me("TextBox" & i)
.Value = Cells(cnt, i - 23)
If i > 26 Then .Value = Format(.Value, "hh:mm")
End With
Next
Exit For
End If
Next

End Function

Function fillChangesRow2(dt As Date)
Dim cnt As Long

For cnt = 8 To 38 'zeilenzähler
If Cells(cnt, 1) = dt Then
TextBox26 = Cells(cnt, 3).Text
TextBox27 = Format(Cells(cnt, 4), "hh:mm")
TextBox28 = Format(Cells(cnt, 5), "hh:mm")
TextBox29 = Format(Cells(cnt, 6), "hh:mm")
End If
Exit For
Next
End Function


Anzeige
AW: Warum klappt der Code nicht
09.11.2025 22:29:25
Frank H.
Hallo und Guten Abend,

sorry das ich mich erst jetzt zurück melde, war aber am schönen Sonntagnachmittag unterwegs.
Es ist schon ein Stück weit peinlich, was ich da mal wieder übersehen habe.
Den Code von Ralf schaue ich mir morgen genauer an, gehe jetzt schlafen!

Euch noch einen schönen Abend und wirklich aufrichtig Danke!!!

L.G. Frank
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18