Clever-Excel-Forum

Normale Version: Wenn Zelle rot dann in anderes Tabellenblatt kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute

Ich habe ein Problem mit Excel und VBA

Ich habe 2 Tabellenblätter, Tabelle1 und Bestellen.
Die Spalte B ist mit einer bedingten Formartierung belegt. Wenn ein bestimmer Wert erreicht ist, wird die Zelle rot.
 
Nun möchte ich die gesamte Zeile in das Tabellenblatt Bestellen kopieren.
Wenn ich die Zelle manuell mit rot ausfülle, dann funktioniert mein Makro.
Mit der bedingten Formatierung nicht.

Ich benutze eine Schaltfläche um das Makro auszuführen.

Hier mein Code.

Sub rot_kopieren()
Dim zel As Range, lz As Long


lz = Sheets("Bestellen").Range("A65000").End(xlUp).Row

For Each zel In Sheets("Tabelle1").Range("B2:B35")

If zel.Interior.ColorIndex = 3 Then

Sheets("Bestellen").Range("A" & lz + 1).Resize(1, 8) = _
Sheets("Tabelle1").Range("A" & zel.Row & ":H" & zel.Row).Value
lz = lz + 1

End If

Next zel

End Sub

Wo liegt der Fehler.


Lieben Gruß

Ralf
die aktuelle bedingte Formatierung wird in neueren xl-Versionen mit

Range("A1").displayFormats

ausgelesen
Servus Ralf,

Du verwendest Excel mit einer Version vor 2010, dann ist das Schlüsselwort "bedingte Formatierung".
Veränderungen der Zell-Darstellung durch die bed. Formatierung verändern nicht die Eigenschaften der Zelle. Damit läuft Dein VBA-Code natürlich ins Leere.
Eine Lösung wäre, die Bedingungen aus der bed. Formatierung im VBA nachzubauen, um so auf Deine "roten" Zellen zu kommen. Dies kann jedoch u.U. extrem komplex werden.
Eine weitere Lösung wäre, Du baust Dir eine Hilfsspalte und erstellst eine Formel, mit der Du die Bedingung nachbaust. Per VBA kannst Du dann das Ergebnis abfragen und eine Kopieraktion starten.

LG Gerd
genauer:


Code:
Debug.print Range("A1").DisplayFormat.Interior.ColorIndex
Guten Morgen


Danke für die Antworten.

Ich werde esmal testen.

Lg

Ralf
So, ich steh jetzt total auf dem Schauch.

Tu mich sehr schwer damit.

@Phi.VBA

Wo wird dieser Code einegesetzt? Huh


@Bamberg

Diese Hilfsspalte müsste dann auch per VBA gebaut werden???

Lg

Ralf

Oh man, mit den neuen  Office Versionen kenne ich mich gar nicht mehr aus.
Morgen Ralf,

kannst Du uns zunächst mitteilen, mit welcher Excel-Version Du arbeitest?

LG Gerd
Hallo Ralf,

ich habe versucht, die Abfrage nach der aktuellen Farbe der bedingten Formatierung in deinen Code einzuarbeiten:


Code:
Sub rot_kopieren()
Dim zel As Range, lz As Long

lz = Sheets("Bestellen").Range("A65000").End(xlUp).Row

For Each zel In Sheets("Tabelle1").Range("B2:B35")
                '### neu ###
    If zel.DisplayFormat.Interior.ColorIndex = 3 Then
        '### /neu ###
        Sheets("Bestellen").Range("A" & lz + 1).Resize(1, 8) = _
        Sheets("Tabelle1").Range("A" & zel.Row & ":H" & zel.Row).Value
        lz = lz + 1
    End If
Next zel
End Sub


(ungetestet)

VG
(22.11.2017, 10:56)Ralf.H. schrieb: [ -> ]Die Spalte B ist mit einer bedingten Formartierung belegt. Wenn ein bestimmer Wert erreicht ist, wird die Zelle rot.
 
Nun möchte ich die gesamte Zeile in das Tabellenblatt Bestellen kopieren.
Moin Namensvetter!
1. Warum fragst Du dann nicht einfach den "bestimmten" Wert ab?
2. Warum filterst Du Spalte B nicht einfach nach der Farbe und kopierst die gesamte Tabelle?
(In gefilterten Listen werden nur die Sichtbaren Zellen kopiert)
Beispieldatei?
Gruß Ralf
Noch etwas:
Da es sich offensichtlich um eine Bestellung einer längeren Liste handelt:
Du brauchst doch Tabelle1 lediglich zu filtern, auszudrucken und den Filter wieder löschen?
Seiten: 1 2