Registriert seit: 22.11.2017
Version(en): 2013
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
Registriert seit: 17.11.2017
Version(en): 2016
die aktuelle bedingte Formatierung wird in neueren xl-Versionen mit
Range("A1").displayFormats
ausgelesen
Registriert seit: 06.11.2017
Version(en): 2013
22.11.2017, 12:36
(Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2017, 12:46 von Bamberg.)
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
Registriert seit: 17.11.2017
Version(en): 2016
genauer:
Code:
Debug.print Range("A1").DisplayFormat.Interior.ColorIndex
Registriert seit: 22.11.2017
Version(en): 2013
Guten Morgen
Danke für die Antworten.
Ich werde esmal testen.
Lg
Ralf
Registriert seit: 22.11.2017
Version(en): 2013
So, ich steh jetzt total auf dem Schauch.
Tu mich sehr schwer damit.
@Phi.VBA
Wo wird dieser Code einegesetzt?

@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.
Registriert seit: 06.11.2017
Version(en): 2013
Morgen Ralf,
kannst Du uns zunächst mitteilen, mit welcher Excel-Version Du arbeitest?
LG Gerd
Registriert seit: 17.11.2017
Version(en): 2016
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
(22.11.2017, 11: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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
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?
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)