Microsoft Excel

Herbers Excel/VBA-Archiv

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

Fehler im Makro?? | Herbers Excel-Forum


Betrifft: Fehler im Makro?? von: Meier
Geschrieben am: 16.02.2012 12:02:51

Hallo zusammen

ich habe mir folgenden VBA-Code zusammengebastelt. Leider funktioniert dieser nicht ganz.

Im Excel habe ich 2 mal je 4 Spalten für eine Quartalsberechnung (x14:aa62,be14:bh62).
Im Register ("Steuerung").Range("B2") schriebe ich dann das aktuelle Qurtal rein. Jetzt möchte ich, dass das aktuelle Quartal Fett ist und die kommmenden Grau hinterlegt werden und die vergangenen normal schwarz sind.

Jedoch funktioniert mir der zweite Teil nicht, wo ich sage was ich fett haben möchte.

Hoffe jemand kann mir hier helfen oder sieht gleich den Fehler.

Vielen vielen Dank.

Sub Quartal_Formatierung_Monate()
  Dim sSheet As Variant, iQuartal As Integer, c As Range
  Dim iOffset As Integer
  iQuartal = Sheets("Steuerung").Range("B2")
  Application.ScreenUpdating = False
  'For Each sSheet In Array    For Each sSheet In Array("Sheet1", "Sheet2")
    With Sheets(sSheet)
      For Each c In .Range("x14:aa62,be14:bh62").Cells
        With c
          If .Column < 28 Then iOffset = 23 Else iOffset = 55
          Select Case .Column
            Case Is < iQuartal + iOffset
                .Font.Bold = False
              .HorizontalAlignment = xlRight
              With .Font
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
              End With
              
            Case .Column = iQuartal + iOffset
                    .Font.Bold = True
                    .HorizontalAlignment = xlRight
              With .Font
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
              End With
              
            Case Else
              .Font.Bold = False
              .HorizontalAlignment = xlCenter
              With .Font
                .Color = -7303024
                .TintAndShade = 0
                .Bold = False
              End With
              
          End Select
          
          .VerticalAlignment = xlBottom
          .WrapText = True
          .Orientation = 0
          .AddIndent = False
          .IndentLevel = 0
          .ShrinkToFit = False
          .ReadingOrder = xlContext
          .MergeCells = False
          
          If .Row = 14 Then .HorizontalAlignment = xlCenter
                            .VerticalAlignment = xlCenter
          
        End With
      Next c
    End With
  Next sSheet
  Application.ScreenUpdating = True
  
  MsgBox "Fertig"
  
End Sub

  

Betrifft: AW: Fehler im Makro?? von: Rudi Maintaire
Geschrieben am: 16.02.2012 12:42:57

Hallo,
das ist falsch: Case .Column = iQuartal + iOffset
Case iQuartal+iOffset

Warum für jede Zellen einzeln?

Gruß
Rudi


  

Betrifft: verbesserung von: Rudi Maintaire
Geschrieben am: 16.02.2012 12:51:19

Hallo,
das ist auf jeden Fall schneller:

Sub Quartal_Formatierung_Monate()
  Dim sSheet As Variant, iQuartal As Integer, c As Range
  Dim i As Long, j As Long
  Dim iOffset As Integer
  iQuartal = Sheets("Steuerung").Range("B2")
  Application.ScreenUpdating = False
  sSheet = "Tabelle1"
  'For Each sSheet In Array    For Each sSheet In Array("Sheet1", "Sheet2")
  With Sheets(sSheet)
    For j = 23 To 56 Step 33
    
      For i = 1 To iQuartal - 1
        With .Cells(14, j).Offset(, i).Resize(49)
          .Font.Bold = False
          .HorizontalAlignment = xlRight
          With .Font
            .ColorIndex = xlAutomatic
            '.TintAndShade = 0
          End With
        End With
      Next i
      
      With .Cells(14, j).Offset(, iQuartal).Resize(49)
        .Font.Bold = True
        .HorizontalAlignment = xlRight
        With .Font
          .ColorIndex = xlAutomatic
          '.TintAndShade = 0
        End With
      End With
      
      For i = iQuartal + 1 To 4
        With .Cells(14, j).Offset(, i).Resize(49)
          .Font.Bold = False
          .HorizontalAlignment = xlCenter
          With .Font
            .Color = -7303024
            '.TintAndShade = 0
            .Bold = False
          End With
        End With
      Next i
      
      With .Cells(14, j).Offset(1, 1).Resize(48, 4)
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
      End With
      With .Cells(14, j).Offset(, 1).Resize(, 4)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
      End With
    Next j
  End With
  Application.ScreenUpdating = True
  
  MsgBox "Fertig"

End Sub

Gruß
Rudi


  

Betrifft: AW: verbesserung von: Meier
Geschrieben am: 16.02.2012 13:31:29

super vielen dank für die schnelle hilfe und sry für den doppeleintrag hab auf reload geklickt.

besten dank und eine gute zeit


Beiträge aus den Excel-Beispielen zum Thema "Fehler im Makro??"