Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Leerzeile nach Monatsletzten | Herbers Excel-Forum


Betrifft: Leerzeile nach Monatsletzten von: Volker
Geschrieben am: 04.01.2012 12:21:00

Hallo zusammen,
folgendes (für mich) Problem:
Ich habe in einer Tabelle die Spalte B mit den fortlaufenden Datums(?) des laufenden Jahres gefüllt.

nun möchte ich nach jedem Monatsende eine Leerzeile einfügen.
Die Spalte fülle ich mittels:

Public Sub Kalender()

Dim WkSh_K   As Worksheet
Dim WkSh_F   As Worksheet
Dim aktJahr  As Integer
Dim dDatum   As Date
Dim lZeile   As Long
Dim lFtage   As Long
 
   Application.ScreenUpdating = False
   
   Set WkSh_K = Worksheets("Stundennachweis")   ' Kalenderblatt
   Set WkSh_F = Worksheets("Tabelle2")   ' Feiertagsblatt
   
   If IsNumeric(WkSh_K.Range("A1").Value) And _
      Len(WkSh_K.Range("A1").Value) = 4 Then
      aktJahr = CInt(WkSh_K.Range("A1").Value)
      dDatum = "01.01." & aktJahr
    Else
      MsgBox "In Zelle A1 steht keine gültige Jahreszahl - Abbruch.", _
         48, "   Hinweis für " & Application.UserName
      Exit Sub
   End If
   
   lZeile = 5
   
   Do
      WkSh_K.Range("A" & lZeile).NumberFormat = "dddd"
      WkSh_K.Range("A" & lZeile).Value = dDatum
      
      For lFtage = 1 To WkSh_F.Range("A65536").End(xlUp).Row
         If dDatum = CDate(WkSh_F.Range("A" & lFtage).Value) Then
            WkSh_K.Range("A" & lZeile).Interior.ColorIndex = 3
            Exit For
         End If
      Next lFtage
      dDatum = dDatum + 1
      lZeile = lZeile + 1
   Loop Until Year(dDatum) > aktJahr
 End Sub
Nun die Frage, was muss ich verändern, damit nach jedem Monatsletzten automatisch eine Leerzeile eingefügt wird?

Danke und Gruß
Volker

  

Betrifft: AW: Leerzeile nach Monatsletzten von: Rudi Maintaire
Geschrieben am: 04.01.2012 12:34:09

Hallo,
lZeile = lZeile + 1 - (Month(dDatum)<>Month(dDatum-1))

Gruß
Rudi


  

Betrifft: AW: Leerzeile nach Monatsletzten von: Josef Ehrensberger
Geschrieben am: 04.01.2012 12:35:31


Hallo Volker,

vielleicht so.

Public Sub Kalender()
  Dim WkSh_K As Worksheet, WkSh_F As Worksheet
  Dim aktJahr As Integer
  Dim dDatum As Date
  Dim lZeile As Long, lFtage As Long
  
  Application.ScreenUpdating = False
  
  Set WkSh_K = Worksheets("Stundennachweis") ' Kalenderblatt
  Set WkSh_F = Worksheets("Tabelle2") ' Feiertagsblatt
  
  If IsNumeric(WkSh_K.Range("A1").Value) And _
    Len(WkSh_K.Range("A1").Value) = 4 Then
    aktJahr = Cint(WkSh_K.Range("A1").Value)
    dDatum = "01.01." & aktJahr
  Else
    MsgBox "In Zelle A1 steht keine gültige Jahreszahl - Abbruch.", _
      48, " Hinweis für " & Application.UserName
    Exit Sub
  End If
  
  lZeile = 5
  
  Do
    With WkSh_K.Cells(lZeile, 1)
      .NumberFormat = "dddd"
      .Value = dDatum
      'Alternative ohne Schleife
      If IsNumeric(Application.Match(Clng(dDatum), WkSh_F.Columns(1), 0)) Then
        .Interior.ColorIndex = 3
      End If
      ' For lFtage = 1 To WkSh_F.Range("A65536").End(xlUp).Row
      ' If dDatum = CDate(WkSh_F.Range("A" & lFtage).Value) Then
      ' .Interior.ColorIndex = 3
      ' Exit For
      ' End If
      ' Next lFtage
    End With
    lZeile = lZeile + IIf(Month(dDatum) = Month(dDatum + 1), 1, 2)
    dDatum = dDatum + 1
  Loop Until Year(dDatum) > aktJahr
End Sub






« Gruß Sepp »



  

Betrifft: AW: Leerzeile nach Monatsletzten von: Volker
Geschrieben am: 04.01.2012 13:05:42

Danke, funktioniert wie gewünscht!
Gruß
Volker


Beiträge aus den Excel-Beispielen zum Thema "Leerzeile nach Monatsletzten"