VBA in Spalten, Datum nach Samstag und Sonntag durchsuchen
#1
Moin,
ich hatte mir mal einen Kalender erstellt und wollte den jetzt aus der Vertikalen in die Horizontale bringen.
Dazu dachte ich mir, mach aus Zeile Spalte und schon gehts.
Irrtum meinerseits, mangels Wissen.

Dazu soll in den Spalten (I5; NO5) Datumsangaben nach Samstagen und Sonntagen gesucht und die entsprechenden Zellen grau gefärbt werden.

In der Zeile: "SpalteEnd = .Cells(.Column.Count, 8).End(xlUp).Column" kommt eine Fehlermeldung 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht. 

Code:
'Zellen nach Wochenenden durchsuchen und färben
    Dim spalte As Long
    Dim SpalteEnd As Long
    Dim zelle As Range
    Dim Bereich As Range

'Zeile 4, Samstag und Sonntag finden und Zellen grau färben
    Sheets("Kalender").Activate
    Set Bereich = Range("I4: NO4")
   
        For Each zelle In Bereich
        If zelle.Value = "Sa" Then zelle.Interior.ColorIndex = 15
        Next zelle
        For Each zelle In Bereich
        If zelle.Value = "So" Then zelle.Interior.ColorIndex = 15

    Next zelle



'Hier beginnt das Problem
    With Sheets("Kalender")
        SpalteEnd = .Cells(.Column.Count, 9).End(xlUp).Column                             
        For spalte = 9 To SpalteEnd                                                         
        If Weekday(.Cells(spalte, 9).Value) = 1 Or Weekday(.Cells(spalte, 9).Value) = 7 Then
        .Cells(spalte, 9).Interior.ColorIndex = 15
         Else
         .Cells(spalte, 9).Interior.ColorIndex = xlColorIndexNone
    End If

    Next spalte

    End With

Wer könnte mich hier unterstützen?
Danke!
Antworten Top
#2
Hallo Björn,

Kalender kopieren, Inhalte einfügen, transponieren.... Fertig.
Ganz im Ernst, einen Kalender per Makro aus der Vertikalen in die Horizontale zu bringen ist schon ziemlich ineffektiv...

Zum Fehler:
.Cells(.Column.Count, 8).End(xlUp).Column ist so mit Sicherheit von Dir nicht gewollt.

.colums.Count ist die Anzahl der Spalten im Worksheet. Warum setzt Du den bei .Cells() als Zeile ein? Sicher meintest Du .Cells(8, .Columns.Count). ACHTUNG, da fehlt ein "s" bei dir im Code!!!
.End(xlUp) sucht von unten kommend die erste beschriebene Zellle. Du willst du mit Sicherheit die .End(xlToLeft) haben, also von links gesucht die erste beschrieben Zelle.
Welche Zeile soll auf den letzten Eintrag geprüft werden? Zeile 8?

Gruß,
Lutz
Antworten Top
#3
Moin Lutz,
vorab danke für Deine Antwort.

Ja, ich habe Spalten und Zeile völig durcheinander bekommen, jetzt läuft es.

Danke!
Code:
With Sheets("Kalender")
        SpalteEnd = .Cells(5, .Columns.Count).End(xlToLeft).Column                             
        For spalte = 8 To SpalteEnd                                                             
        If Weekday(.Cells(5, spalte).Value) = 1 Or Weekday(.Cells(5, spalte).Value) = 7 Then   
        .Cells(5, spalte).Interior.ColorIndex = 15
         Else
         .Cells(5, spalte).Interior.ColorIndex = xlColorIndexNone
    End If

    Next spalte

    End With
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste