Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1068to1072
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

Erste Zeile und Spalte mit Daten ermitteln

Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 10:39:44
Daniel
Hallo Community,
ich habe mir ein Makro gebastelt, dass mir im aktiven Tabellenblatt auf Knopfdruck einen mit Daten gefüllten Bereich formatiert mit einer Überschriftszeile und danach im Wechsel jede zweite Zeile zur besseren Übersicht farbig. Das klappt soweit ganz hervorragend, allerdings nur, wenn der Datenbereich in Zelle A1 beginnt. Wie kann ich nun Variablen in das Makro einbauen, so dass die erste gefüllte Zeile und Spalte berücksichtigt werden und die Formatierung erst dort beginnt?
Bisher sieht das Ganze so aus:

Sub ZeilenEinfärben()
Dim Zeile As Integer
Dim ZeileMax As Integer
Dim Spalte As Integer
Dim SpalteMax As Integer
With ActiveSheet
ZeileMax = .UsedRange.Rows.Count
SpalteMax = .UsedRange.Columns.Count
For Spalte = 1 To SpalteMax
.Cells(1, Spalte).Interior.Color = RGB(17, 51, 136)
.Cells(1, Spalte).Font.Color = RGB(255, 255, 255)
Next Spalte
For Zeile = 2 To ZeileMax Step 2
For Spalte = 1 To SpalteMax
.Cells(Zeile, Spalte).Interior.Color = RGB(255, 255, 255)
Next Spalte
Next Zeile
For Zeile = 3 To ZeileMax Step 2
For Spalte = 1 To SpalteMax
.Cells(Zeile, Spalte).Interior.Color = RGB(216, 216, 213)
Next Spalte
Next Zeile
End With
End Sub


Viele Grüße
Daniel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 11:11:23
Tino
Hallo,
teste mal diesen Code.
Es werden z.Z. nur Zellen mit Werten berücksichtigt,
sollten auch Formeln enthalten sein müsste der Code eventuell erweitert werden.
Fehlerbehandlung habe ich auch nicht eingebaut.
Sub ZeilenEinfärben()
Dim A As Long, Zeile As Long, SpalteMax As Long, ZeileMax As Long
Dim rErste As Range


With Application
 .ScreenUpdating = False

    Set rErste = Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, 1, 1, 1, False, False, False)
    SpalteMax = Cells(rErste.Row, Columns.Count).End(xlToLeft).Column
    
    With Range(rErste, Cells(rErste.Row, SpalteMax))
        
        .Interior.Color = RGB(17, 51, 136)
        .Font.Color = RGB(255, 255, 255)
    
        ZeileMax = Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, 1, 1, 2, False, False, False).Row
        
        A = 1
        For Zeile = rErste.Row + 1 To ZeileMax Step 2
           .Offset(A, 0).Interior.Color = RGB(255, 255, 255)
           A = A + 2
        Next Zeile
        
        A = 2
        For Zeile = rErste.Row + 2 To ZeileMax Step 2
          .Offset(A, 0).Interior.Color = RGB(216, 216, 213)
          A = A + 2
        Next Zeile
    
    End With
 
 .ScreenUpdating = True
End With
End Sub


Gruß Tino

Anzeige
noch eine ohne Schleife
14.04.2009 11:50:46
Tino
Hallo,
hier noch eine Version mit der Bedingten Formatierung dafür ohne Schleife.
Sub ZeilenEinfärben()
Dim A As Long, Zeile As Long, SpalteMax As Long, ZeileMax As Long
Dim rErste As Range

    Set rErste = Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, 2, 1, 1, False, False, False)
    SpalteMax = Cells(rErste.Row, Columns.Count).End(xlToLeft).Column
    
     With Range(rErste, Cells(rErste.Row, SpalteMax))
        .Interior.Color = RGB(17, 51, 136)
        .Font.Color = RGB(255, 255, 255)
     End With
     
     On Error Resume Next
      ZeileMax = Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, 2, 1, 2).Row
      ZeileMax = Application.Max(ZeileMax, Cells.Find("*", Cells(Rows.Count, Columns.Count), xlFormulas, 2, 1, 2).Row)
     On Error GoTo 0
        
     Set rErste = Range(rErste.Offset(1, 0), Cells(ZeileMax, SpalteMax))
     
     With rErste
        .FormatConditions.Delete
        
        .FormatConditions.Add xlExpression, , "=REST(ZEILE();2)=1"
        .FormatConditions(1).Interior.Color = RGB(255, 255, 255)
        
        .FormatConditions.Add xlExpression, , "=REST(ZEILE();2)=0"
        .FormatConditions(2).Interior.Color = RGB(216, 216, 213)

     End With

End Sub


Gruß Tino

Anzeige
AW: Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 11:15:29
Daniel
Hi
probiers mal so:

With ActiveSheet.Usedrange
ZeileMax = .Rows.Count
SpalteMax = .Columns.Count


der Rest kann so bleiben, wie er ist.
Gruß, Daniel

AW: Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 11:15:42
Matthias
Hallo
So kannst Du den Bereich ermitteln

Option Explicit
Sub BeginnFinden()
Dim rng As Range
Dim ZeileMin As Long
Dim SpalteMin As Long
Dim ZeileMax As Long
Dim SpalteMax As Long
With ActiveSheet
For Each rng In .UsedRange
If Not IsEmpty(rng) Then Exit For
Next
ZeileMin = rng.Row
SpalteMin = rng.Column
ZeileMax = .UsedRange.Rows.Count
SpalteMax = .UsedRange.Columns.Count
End With
MsgBox "ZeileMIN = " & ZeileMin   'Test
MsgBox "SpalteMIN = " & SpalteMin 'Test
MsgBox "ZeileMax = " & ZeileMax   'Test
MsgBox "SpalteMax = " & SpalteMax 'Test
Range(Cells(ZeileMin, SpalteMin), Cells(ZeileMax, SpalteMax)).Select
End Sub


Den Rest hast Du ja schon.
Gruß Matthias

Anzeige
AW: Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 11:51:34
Daniel
Hallo Matthias,
ich habe deinen Code noch leicht modifiziert, da ZeileMax und SpalteMax nur von Zelle A1 aus gezählt wurden. Wenn bspw. Spalte A leer war, wurde also im Bereich eine Spalte zu wenig markiert.
Angepasst habe ich lediglich hier:
ZeileMax = .UsedRange.Rows.Count + ZeileMin - 1
SpalteMax = .UsedRange.Columns.Count + SpalteMin - 1
Funktioniert nun bestens. :)
Daniel
AW: Erste Zeile und Spalte mit Daten ermitteln
14.04.2009 11:40:49
Daniel
Super, die Lösung von Daniel war genau die, die ich brauchte. Und so einfach... *an die Stirn hau* Die beiden anderen Lösungen werde ich mir gleich noch mal genauer anschauen. Die Problematik, dass ich Anfangszeile oder -spalte benötige und nicht mit Usedrange arbeiten kann, wird definitiv mal auf mich zukommen. Von daher wieder was dazugelernt und euch allen einen herzlichen Dank! :-)
Daniel
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge