Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1852to1856
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

Schleife ohne Wert MsgBox

Schleife ohne Wert MsgBox
04.11.2021 18:24:25
Peer
Hallo liebe VBA-Gemeinde.
Ich habe mir in meinem Ribbon ein Dropdown eingebettet, mit dem ich bei bestimmten Zellen Werte eintragen lasse. Z.B. Soll bei Auswahl "Arbeitszeit" die Werte aus den Spalten 20 und 21 zusammen in Spalte 14 mit einem Bindestrich dazwischen eingetragen werden.
Voraussetzung ist, das auch Werte in der Tabelle stehen.
Erster Teil funktioniert auch, nur scheitere ich gerade daran, das eine MsgBox erscheinen soll, wenn in der Tabelle in den Spalte und keine Werte stehen.

Option Explicit
Public Sub SonstAngaben_ArbZ()
Dim i As Long
Dim strA As String, strB As String, strC As String
With ActiveSheet
For i = 12 To .Cells(42, 20).End(xlUp).Row
'wenn Zelle Spalte 14 leer und Zelle Spalte 20 nicht leer, dann übertrage 20 und 21 nach 14
If .Cells(i, 14) = "" And .Cells(i, 20) > "" Then
If .Cells(i, 4) = "Ruhe" Or .Cells(i, 4) = "Krank" Or .Cells(i, 4) = "Urlaub" Then
.Cells(i, 14) = ""
Else
strA = .Cells(i, 20).Text
strB = .Cells(i, 21).Text
strC = strA & " - " & strB
.Cells(i, 14) = strC
.Cells(8, 14).Value = ""
.Cells(8, 14).Value = "Arbeitszeit"
.Cells(i, 14).HorizontalAlignment = xlCenter
End If
ElseIf .Cells(i, 20) = "" And .Cells(i, 21) = "" Then
MsgBox "Keine Angaben", vbInformation
.Cells(8, 14).Value = "Sonstige Angaben"
Exit Sub
End If
Next i
End With
End Sub
Wo habe ich den Fehler?
Vielleicht kann mir jemand auf die Sprünge helfen.
Vielen Dank im Voraus
Gruß
Peer

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife ohne Wert MsgBox
04.11.2021 22:09:11
Rudi
Hallo,
muss doch wohl

If .Cells(i, 14) = "" And .Cells(i, 20) > "" Then
heißen.
Gruß
Rudi
AW: Schleife ohne Wert MsgBox
04.11.2021 22:30:13
Peer
Hallo
Leider ohne Erfolg
MFG
Peer
AW: Schleife ohne Wert MsgBox
05.11.2021 10:43:26
Rudi
Hallo,
so?

Public Sub SonstAngaben_ArbZ()
Dim i As Long
Dim strA As String, strB As String, strC As String
With ActiveSheet
For i = 12 To .Cells(42, 20).End(xlUp).Row
'wenn Zelle Spalte 14 leer und Zelle Spalte 20 nicht leer, dann übertrage 20 und 21 nach 14
If .Cells(i, 14) = "" Then
If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
Select Case .Cells(i, 4)
Case "Ruhe", "Krank", "Urlaub"
.Cells(i, 14) = ""
Case Else
strA = .Cells(i, 20).Text
strB = .Cells(i, 21).Text
strC = strA & " - " & strB
.Cells(i, 14) = strC
.Cells(8, 14).Value = ""
.Cells(8, 14).Value = "Arbeitszeit"
.Cells(i, 14).HorizontalAlignment = xlCenter
End Select
Else
MsgBox "Keine Angaben in Zeile " & i, vbInformation
.Cells(8, 14).Value = "Sonstige Angaben"
End If
End If
Next i
End With
End Sub
Gruß
Rudi
Anzeige
AW: Schleife ohne Wert MsgBox
05.11.2021 10:40:33
Piet
Hallo
wenn man sich die Antwort von Rudi und den Original Code genau anschaut springt einem die Lösung direkt ins Gesicht.
Auch dann wenn der Code von Rudi einen kleinen Fehler enthält. Probier es bitte mal so: (s. Code Ausschnitt)
mfg Piet
  • 
    Sub Test
    If .Cells(i, 14) = "" And .Cells(i, 20) = "" Then _
    MsgBox "Beide Spalten sind leer!"
    If .Cells(i, 14) = "" And .Cells(i, 20) > "" Then
    If .Cells(i, 4) = "Ruhe" Or .Cells(i, 4) = "Krank" Or .Cells(i, 4) = "Urlaub" Then
    End Sub
    

  • AW: Schleife ohne Wert MsgBox
    05.11.2021 20:01:59
    Peer
    Hallo ihr beiden.
    Entschuldigt, dass ich so spät antworte.
    Vielen Dank erstmal für eure Hilfe.
    Aber leider funktionieren beide Vorschläge nicht.
    Ich dachte darüber nach, ob es vielleicht daran liegen kann, dass in den Spalten die Werte im Format hh:mm sind und deshalb "" nicht funktioniert. Daher habe ich = 0 versucht, aber auch hier kein Erfolg.
    Erschwerend kommt hinzu, dass einige Zeilen der Spalte von Grund auf leer sind, weshalb mein Gedanke dazu nicht klug sein kann.
    Es handelt sich hierbei um Zeilen mit den Wochentagen, bei denen am Wochenende keine Einträge vorhanden sind.
    @piet
    Zum Verständnis, wo liegt der Unterschied, ob ich
    
    If .Cells(i, 14) = "" And .Cells(i, 20) = "" Then _
    MsgBox "Beide Spalten sind leer!"
    
    am Anfang der For Schleife lege, oder
    
    ElseIf .Cells(i, 20) = "" And .Cells(i, 21) = "" Then
    MsgBox "Keine Angaben", vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    Exit Sub
    
    am Ende der If-Schleife stelle?
    VG
    Peer
    Anzeige
    AW: Schleife ohne Wert MsgBox
    05.11.2021 20:26:04
    Peer
    Ich bin es nochmal.
    Scheinbar funktioniert euer Code in einer Beispiel-Datei ansatzweise, nur nicht in meiner Projekt-Datei.
    warum, weiß ich auch (noch) nicht.
    Deshalb sende ich mal die Beispieldatei.
    https://www.herber.de/bbs/user/148968.xlsm
    LG
    Peer
    AW: Schleife ohne Wert MsgBox
    06.11.2021 00:43:28
    Piet
    Hallo
    probier bitte mal diesen Code aus, er überspringt "Ruhe, Krank, Urlaub" ohne MsgBox Anzeige. Würde mich freuen wenn es so klappt.
    Das konkrete Problem ist m.E. die Berücksichtigung dieser Leer- oder Fehlzeiten. Alle Achtung, so viele Module habe ich noch nie in einem Besispiel gesehen. Das war sicher eine Menge zu Programmieren.
    mfg Piet
  • 
    Public Sub SonstAngaben_ArbZ()
    Dim i As Long, Txt As String
    Dim strA As String, strB As String, strC As String
    With ActiveSheet
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 nicht leer, dann übertrage 20 und 21 nach 14
    Txt = Trim(.Cells(i, 4))
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    ''' diese Zeiten nicht mit MsgBox anzeigen!!!
    ElseIf Txt = "Ruhe" Or Txt = "Krank" Or Txt = "Urlaub" Then
    Else
    MsgBox "Keine Angaben in Zeile " & i, vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    End If
    End If
    Next i
    End With
    End Sub
    

  • Anzeige
    AW: Schleife ohne Wert MsgBox
    06.11.2021 09:42:45
    Peer
    Hallo Piet.
    Respekt, so spät noch anderen seine Hilfe anzubieten.
    Leider funktioniert auch dein aktueller Code nicht, wie erhofft.
    Es ist in der Tat (noch) ein Problem, innerhalb er Schleifen, die Leerzellen einzubeziehen.
    Mein Projekt hat noch viel mehr Module, weshalb ich wegen der Größe nur einen kleinen Schnipsel hochladen konnte.
    Viele dieser Module sind hier im Forum entstanden durch die zahlreiche Hilfe der hiesigen Forumteilnehmer.
    Ich habe versucht innerhalb der For Schleife aber außerhalb der zweiten If-Schleife die Abfrage zu stellen.
    Also wenn Spalte 14 leer und Spalte 20 leer und Spalte 21 leer, dann MsgBox, wenn Spalte 14 leer und Spalte 20 und Spalte 21 nicht leer, dann Werte eintragen.
    Aber auch hier kein Erfolg.
    
    'Schleife durch die Zeilen 12 bis 42
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 und Spalte 21 nicht leer, dann übertrage 20 und 21 nach 14
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    End If
    Else
    'wenn Zellen Spalte 14 leer und Zellen Spalte 20 leer und Zellen Spalte 21 leer, dann Meldung
    .Cells(i, 14) = "" And .Cells(i, 20) = "" And .Cells(i, 21) = ""
    MsgBox "Keine Angaben", vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    End If
    Next i
    
    LG
    Peer
    Anzeige
    AW: Schleife ohne Wert MsgBox
    06.11.2021 10:36:46
    Werner
    Hallo,
    
    'Schleife durch die Zeilen 12 bis 42
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 und Spalte 21 nicht leer, dann übertrage 20 und 21 nach 14
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    ElseIf Len(.Cells(i, 20)) = 0 And Len(.Cells(i, 21)) = 0 Then
    'wenn Zellen Spalte 14 leer und Zellen Spalte 20 leer und Zellen Spalte 21 leer, dann Meldung
    .Cells(i, 14) = "" And .Cells(i, 20) = "" And .Cells(i, 21) = ""
    MsgBox "Keine Angaben", vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    End If
    End If
    Next i
    
    Gruß Werner
    Anzeige
    AW: Schleife ohne Wert MsgBox
    06.11.2021 11:31:30
    Peer
    Hallo Werner.
    Danke für deine Hilfe.
    Ich habe dein Beispiel einfach mal übernommen und eingefügt.
    Bei deinem Beispiel geht er innerhalb der Schleife alle Zeilen durch und daher wird die Meldung bei alle leeren Zeilen, auch in den Wochenenden angezeigt.
    Aber sie soll nur kommen, wenn die Spalten 20 und 21 leer sind im Bereich Zeile 12 bis 42, also keine Daten in den Spalten 20 und 21 sind.
    Gruß
    Peer
    AW: Schleife ohne Wert MsgBox
    06.11.2021 11:44:56
    Werner
    Hallo,
    dann frag halt noch die Spalte C ab, ob dort Sa oder So steht.
    
    'Schleife durch die Zeilen 12 bis 42
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 und Spalte 21 nicht leer, dann übertrage 20 und 21 nach 14
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    ElseIf Len(.Cells(i, 20)) = 0 And Len(.Cells(i, 21)) = 0 Then
    Select Case .Cells(i, 3).Text
    Case "Sa", "So"
    Case Else
    'wenn Zellen Spalte 14 leer und Zellen Spalte 20 leer und Zellen Spalte 21 leer, dann Meldung
    MsgBox "Keine Angaben", vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    End Select
    End If
    End If
    Next i
    
    Gruß Werner
    Anzeige
    AW: Schleife ohne Wert MsgBox
    06.11.2021 12:25:21
    Peer
    Hallo Werner.
    Leider ist das Ergebnis ein ganz anderes.
    Wenn ich in der Beispiel Datei deine Lösung einfüge, geschieht im Register "Februar", bei der in den Spalten 20 und 21 keine Angaben vorhanden sind, gar nichts.
    Im Register "Januar", bei dem Werte in den Spalten sind, durchläuft die Schleife scheinbar wahllos umher.
    Ich habe im Code die Zeile in die MsgBox eingebaut, um zu sehen, was die Schleife alles findet.
    Am Ende ist es aber nicht das, was ich bezwecke.
    Vielleicht lasse ich die Prüfung einfach weg. Aber der Ehrgeiz hindert mich daran. ;-)
    
    'Schleife durch die Zeilen 12 bis 42
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 und Spalte 21 nicht leer, dann übertrage 20 und 21 nach 14
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    ElseIf Len(.Cells(i, 20)) = 0 And Len(.Cells(i, 21)) = 0 Then
    Select Case .Cells(i, 3).Text
    Case "Sa", "So"
    Case Else
    'wenn Zellen Spalte 14 leer und Zellen Spalte 20 leer und Zellen Spalte 21 leer, dann Meldung
    MsgBox "Keine Angaben" & " in Zeile " & i, vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    End Select
    End If
    End If
    Next i
    End With
    
    Hier nochmal die Datei...
    https://www.herber.de/bbs/user/148975.xlsm
    VG
    Peer
    Anzeige
    AW: Schleife ohne Wert MsgBox
    06.11.2021 13:43:38
    Werner
    Hallo,
    laut Kommentar willst du die Spalten ab Zeile 12 bis Zeile 42 durchlaufen.
    Du ermittelst aber die letzte belegte Zelle in Spalte 20 ab Zeile 42 (von unten). Als Ergebnis bekommst du da aber (im Blatt Januar) die Zeile 38. Das ist von Zeile 42 nach oben die letzte belegte Zeile, die erste freie Zeile wäre dann die Zeile 37. Somit läuft die Schleife mitnichten bis Zeile 42.
    Das ist auch der Grund, weshalb im Blatt Februar vermeintlich nichts passiert. Da die Spalte 20 bis auf die Überschriftenzeile in Zeile 12 komplett leer ist, bekommst du als Ergebnis von .Cells(42, 20).End(xlUp).Row die Zeile 11 (Überschriftenzeile). Deine Schleife läuft also von 12 bis 11 - somit also gar nicht.
    Und was du mit der Aussage meinst, dass die Schleife scheinbar wahllos umher läuft, kann ich nicht nachvollziehen.
    Die Schleife läuft (Ermittlung der letzten belegten Zeile habe ich auf Spalte B gelegt) von Zeile 12 bis Zeile 40 (für den Februar) und gibt dir in der Messagebox jeweils die Zeilennummer aus in der
    1. die Zelle in Spalte 14 leer ist
    2. die Zelle in Spalte 20 leer ist
    3. die Zelle in Spalte 21 leer ist
    4. die Zelle in Spalte 3 nicht Sa ist
    4. die Zelle in Spalte 3 nicht So ist
    Keine Ahnung wo dein Problem liegt.
    
    Public Sub SonstAngaben_ArbZ()
    Dim i As Long
    'Schleife durch die Zeilen 12 bis 42
    For i = 12 To Cells(44, 2).End(xlUp).Offset(-1).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 und Spalte 21 nicht leer, dann übertrage 20 und 21 nach 14
    If Cells(i, 14) = "" Then
    If Len(Cells(i, 20)) And Len(Cells(i, 21)) Then
    Select Case Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    Cells(i, 14) = ""
    Case Else
    Cells(i, 14) = Cells(i, 20).Text & " - " & Cells(i, 21).Text
    Cells(8, 14).Value = "Arbeitszeit"
    Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    ElseIf Len(Cells(i, 20)) = 0 And Len(Cells(i, 21)) = 0 Then
    Select Case Cells(i, 3).Text
    Case "Sa", "So"
    Case Else
    'wenn Zellen Spalte 14 leer und Zellen Spalte 20 leer und Zellen Spalte 21 leer, dann Meldung
    MsgBox "Keine Angaben" & " in Zeile " & i, vbInformation
    Cells(8, 14).Value = "Sonstige Angaben"
    End Select
    End If
    End If
    Next i
    End Sub
    
    Und was du damt: Cells(8, 14).Value = "Arbeitszeit" bzw. damit: Cells(8, 14).Value = "Sonstige Angaben"
    willst ist mir unklar.
    Dir ist hoffentlich klar, dass dort immer der Wert der letzten geprüften Zeile drin steht, weil das innerhalb der Schleife ja ständig überschrieben wird.
    Gruß Werner
    Anzeige
    AW: Danke an Werner für LastRow 42
    06.11.2021 14:25:51
    Piet
    Hallo
    ich habe gerade den Beitrag von Werner gelesen und sofort erkannt das er Recht hat. Bitte bei For Next die Zeile auf 44 erhöhen
    Wenn das Blatt bis Zeile 42 voll ist stimmt sonst die LastRow Auswertung nicht!. _ For i = 12 To .Cells(44, 20).End(xlUp).Row
    Danke an Werner das ich den Fehler im Makro noch erkannt habe!!
    mfg Piet
    AW: Schleife ohne Wert MsgBox
    08.11.2021 10:35:32
    Peer
    Danke Werner
    AW: Schleife ohne Wert MsgBox
    06.11.2021 14:15:05
    Piet
    Hallo
    ich habe nach mehreren Versuchen das Makro jetzt mal so aufgebaut. Es liess mir keine Ruhe die Fehlermeldung nicht in den Griff zu bekommen.
    Fehlt ein Zeit Wert erscheint in Spalte 14 zur MsgBox der rote Text "Bitte prüfen". Bei neuem Makro Start wird der Text immer automatisch gelöscht!!
    mfg Piet
  • Public Sub SonstAngaben_ArbZ()
    Dim i As Long, Txt As String
    Dim strA As String, strB As String, strC As String
    With ActiveSheet
    .Unprotect
    For i = 12 To .Cells(42, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 nicht leer, dann übertrage 20 und 21 nach 14
    If .Cells(i, 14) = "Bitte prüfen" Then
    .Cells(i, 14) = ""
    .Cells(i, 14).Font.ColorIndex = 1
    End If
    Txt = Trim(.Cells(i, 4))
    If .Cells(i, 14) = "" Then
    If Len(.Cells(i, 20)) And Len(.Cells(i, 21)) Then
    Select Case .Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    .Cells(i, 14) = ""
    Case Else
    strA = .Cells(i, 20).Text
    strB = .Cells(i, 21).Text
    strC = strA & " - " & strB
    .Cells(i, 14) = strC
    .Cells(8, 14).Value = ""
    .Cells(8, 14).Value = "Arbeitszeit"
    .Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    End If
    End If
    ''' diese Zeiten nicht mit MsgBox anzeigen!!!
    If Txt = "Ruhe" Or Txt = "Krank" Or Txt = "Urlaub" Then
    ElseIf .Cells(i, 14).Value = "" Then
    MsgBox "Keine Angaben in Zeile " & i, vbInformation
    .Cells(8, 14).Value = "Sonstige Angaben"
    .Cells(i, 14).Value = "Bitte prüfen"
    .Cells(i, 14).Font.ColorIndex = 3
    End If
    Next i
    .Protect
    End With
    Exit Sub

  • Anzeige
    AW: Schleife ohne Wert MsgBox
    08.11.2021 08:33:03
    Peer
    Hallo Piet.
    Da das ganze Wochenende meine Antwort nicht ankamen, versuche ich es nochmal.
    Außerdem sitze ich gerade mit Grippe vorm PC, die mich das ganze Wochenende begleitet hat.
    Dein Beispiel reagiert nicht, wenn KEIN Eintag vorhanden ist, wenn mindestens ein Eintrag in den Spalten 20 und 21 steht, kommt die Meldung "keine Angaben". Wenn letzte Zeile (42) keinen Eintrag hat, dann kommt die Meldung auch, wenn alle anderen Zeilen Werte besitzen.
    Hast du dein Beispiel mit meiner hoch geladenen Datei probiert? Liegt es vielleicht nur an mir?
    VG
    Peer
    AW: Schleife ohne Wert MsgBox
    08.11.2021 10:35:50
    Peer
    Danke, Piet
    AW: Schleife ohne Wert MsgBox
    08.11.2021 10:33:42
    Peer
    Hallo Piet und Werner.
    Ich glaube, ich habe die Lösung gefunden.
    Sie ist zwar recht einfach, aber sie arbeitet nach meinen Vorstellungen.
    Vielleicht kann man es auch besser machen, wäre für jeden Tipp als Anfänger dankbar.
    
    Option Explicit
    Public Sub SonstAngaben_ArbZ()
    Dim i As Long
    'Dim strA As String, strB As String, strC As String
    If WorksheetFunction.CountA([T12:U42]) = 0 Then
    MsgBox "keine Arbeitszeiten vorhanden"
    Else:
    With ActiveSheet
    For i = 12 To .Cells(44, 20).End(xlUp).Row
    'wenn Zelle Spalte 14 leer und Zelle Spalte 20 nicht leer, dann übertrage 20 und 21 nach 14
    If Cells(i, 14) = "" Then
    If Len(Cells(i, 20)) And Len(Cells(i, 21)) Then
    Select Case Cells(i, 4)
    Case "Ruhe", "Krank", "Urlaub"
    Cells(i, 14) = ""
    Case Else
    Cells(i, 14) = Cells(i, 20).Text & " - " & Cells(i, 21).Text
    Cells(8, 14).Value = "Arbeitszeit"
    Cells(i, 14).HorizontalAlignment = xlCenter
    End Select
    End If
    End If
    Next i
    End With
    End If
    End Sub
    
    Ich habe hier Werner's Code genommen, da er klein und übersichtlich ist. Danke dafür, Werner.
    Sa und So habe ich raus genommen, da man auch mal am Wochenende arbeitet.
    LG
    Peer

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige