Anzeige
Archiv - Navigation
1864to1868
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

Wenn Dann For Next

Wenn Dann For Next
06.01.2022 12:47:29
Bernd
Hallo an die Runde
Ich benötige einen oder zwei Verbesserungsvorschläge.
Hier mein Ansatz

Private Sub Worksheet_Activate()
D_Beginn
D_Ende
End Sub
Sub D_Beginn()
Dim Cell As Range
For Each Cell In Range("A18:A59")
If Cell.Value = "T" Then
Cell.Offset(0, 3).Value = "06:15"
ElseIf Cell.Value = "N" Then
Cell.Offset(0, 3).Value = "18:15"
Else
Cell.Offset(0, 3).Value = ""
End If
Next Cell
End Sub Sub D_Ende()
Dim Cell As Range
For Each Cell In Range("A18:A59")
If Cell.Value = "T" Then
Cell.Offset(0, 4).Value = "18:30"
ElseIf Cell.Value = "N" Then
Cell.Offset(0, 4).Value = "06:30"
ElseIf Cell.Value = "L" Then
Cell.Offset(0, 16).Value = "Lehrgang"
Else
Cell.Offset(0, 5).Value = ""
End If
Next Cell
End Sub Jetzt kam noch der Wunsch hoch, dass die Ausgangsdaten für T, N, U, SU und und und
in einer Arbeitsmappe unter der Tabelle "Legende" abgefragt werden.
Es könnte ja sein, dass sich die Zeiten mal änderen.
Somit brauch man nicht in den Quelltext rein.
Habt Ihr Vorschläge für die Umsetzung ?
https://www.herber.de/bbs/user/150194.xlsm
Zum besseren hineindenken mein Beispiel

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Dann For Next
06.01.2022 12:56:27
{Boris}
Hi,
ohne jetzt in Deinem Code weiter rumzufummeln:
Gib den Zellen im Blatt "Legende" Namen.
Also z.B. Tagschicht Beginn = Zelle E7 - Name: TB
Tagschicht Ende = Zelle F7 - Name: TE
Nachtschicht Beginn - Zelle E8 - Name: NB
Nachschicht Ende - Zelle F8 - Name: NE
Im Code kannst Du dann auf die benamten Zellen referenzieren - hier am Beispiel D_Beginn:

Sub D_Beginn()
Dim Cell As Range
For Each Cell In Range("A18:A59")
If Cell.Value = "T" Then
Cell.Offset(0, 3).Value = Range("TB")
ElseIf Cell.Value = "N" Then
Cell.Offset(0, 3).Value = Range("NB")
Else
Cell.Offset(0, 3).Value = ""
End If
Next Cell
End Sub
Geht natürlich auch ohne Namen mit direktem Bezug zu entsprechenden Zelle im Blatt Legende - aber wenn Du die Zellen mal verschieben solltest, geht das dann in die Hose. Daher besser mit Namen.
VG, Boris
Anzeige
AW: Wenn Dann For Next
06.01.2022 14:11:56
Bernd
Hallo Boris
Ich habe dich jetzt so verstanden

Sub D_Beginn()
Dim Cell As Range
For Each Cell In Range("A18:A59")
If Cell.Value = "T" Then
Cell.Offset(0, 3).Value = Worksheets("Februar").Range("E7").Value
ElseIf Cell.Value = "N" Then
Cell.Offset(0, 3).Value = Worksheets("Februar").Range("F7").Value
Else
Cell.Offset(0, 3).Value = ""
End If
Next Cell
End Sub
Aber ich glaube hierbei einen Denkfehler zu haben.
Oder ?
Das ist nicht...
06.01.2022 16:26:08
{Boris}
Hi,
...die Namens-Lösung, sondern
Geht natürlich auch ohne Namen mit direktem Bezug zu entsprechenden Zelle im Blatt Legende
Ich hab angenommen, dass Du weißt, wie man einer Zelle / einem Bereich einen Namen vergibt..?
VG, Boris
Anzeige
AW: Wenn Dann For Next
06.01.2022 13:20:05
ChrisL
Hi
Ich bin mal mit SVERWEIS an die Sache ran:
https://www.herber.de/bbs/user/150199.xlsm
(Legende Spalte C und D habe ich getauscht)

Private Sub Worksheet_Activate()
Dim rngZelle As Range
Dim rngLegende As Range: Set rngLegende = Worksheets("Legende").Range("C:F")
Application.ScreenUpdating = False
Range("D18:Q59").ClearContents
For Each rngZelle In Range("A18:A59")
If Len(rngZelle) Then
rngZelle.Offset(0, 3) = WorksheetFunction.VLookup(rngZelle, rngLegende, 3, 0)
rngZelle.Offset(0, 4) = WorksheetFunction.VLookup(rngZelle, rngLegende, 4, 0)
rngZelle.Offset(0, 16).Value = WorksheetFunction.VLookup(rngZelle, rngLegende, 2, 0)
End If
Next rngZelle
End Sub
Der Hinweis von Boris betr. den Namen ist gut, aber hier noch nicht umgesetzt.
cu
Chris
Anzeige
AW: Wenn Dann For Next
06.01.2022 14:25:35
Bernd
Hallo ChrisL
Mit dem SVerweis hast du mich auf ein anderes Projekt von mir aufmerksam gemacht
DANKE für den Stichpunkt
Darf ich dich diesbezüglich zu einem späreren Zeitpunkt Fragen?
mfg Bernd
AW: Wenn Dann For Next
06.01.2022 14:40:21
ChrisL
Hi Bernd
Klar... Da ich auch nicht immer im Forum aktiv bin, empfehle ich die Frage an die Allgemeinheit zu richten. Ich bin zuversichtlich, dass deine SVERWEIS-Frage beantwortet werden kann ;)
cu
Chris
AW: Wenn Dann For Next
06.01.2022 14:20:57
Bernd
hallo onur
ich gebe dir recht mit der Formellösung
jedoch wollte ich über VBA das probieren.
einmal: zum Lernen bzw. wissen vertiefen
zweitens: wenn ich mal was in der Tabelle ändern möchte, brauch ich auf keine Formel achten.
aber danke für deinen Lösungsvorschlag
ich werde den Vorschlag von Boris weiter gehen.
Anzeige
AW: Wenn Dann For Next
06.01.2022 14:22:59
onur
Du wirst aber kaum " Lernen bzw. wissen vertiefen", wenn andere Leute das Problem für dich lösen, :)
AW: Wenn Dann For Next
06.01.2022 14:32:22
Bernd
damit hast du Recht.
Darum probiere ich ja meine Quelltexte hier reinzustellen
der bestimmt nicht perfekt ist (weil ich ja noch lernen)
und dann nach Verbesserungsvorschlägen zu Fragen und nicht nach Lösungen.
Ich versuchen dann das umzusetzen und auch zu verstehen.
also Frag ich dann nach ob ich es Richtig Umgesetzt habe.
Wenn nicht brauche ich wieder ein Lösungsforschlag
Wenn ich es geschaft habe dann gönne ich mir ne Tasse Kaffee als belohnung :-)
AW: Wenn Dann For Next
06.01.2022 18:01:48
Bernd
Hallo onur
Ganz vielen Dank für deine Zuarbeit
kannst du mir das mal auskommentieren
es funktioniert KLASSE aber ich verstehe es noch nicht.
Gruß Ingo
AW: Wenn Dann For Next
06.01.2022 18:31:31
Bernd
Hallo onur
Ich hab mal versucht mich reinzudenken und hab mal noch eine Summe mit eingearbeitet

Private Sub Worksheet_Activate()
Dim z
arr = Sheets("Legende").Range("c7:f12")
For z = 18 To 59
i = indx(Cells(z, 1))
If i > 0 Then
If i 
jedoch auch hier wieder ein Knoten im Kopf :-)
kannst du mir eine Erleuterung zu meinem Fehler geben (keine Lösung)
vieleicht schaffe ich es ja dann selber :-)
Gruß Ingo
Anzeige
AW: Wenn Dann For Next
06.01.2022 18:59:26
onur
Keine Ahnung, was du da für eine Summe wohin eintragen möchtest, aber es zeigt mir, dass du nicht verstanden hast, was mein Code macht.
AW: Wenn Dann For Next
06.01.2022 19:05:06
Bernd
Ich hatte versucht in Spalte F die Summe von D und E je Zeile zu gennerieren.
Abgesehn von dem Problem der Uhrzeit.
Darum würde ich mich morgen kümmern

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige