Anzeige
Archiv - Navigation
456to460
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
456to460
456to460
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelle einfärben bei 3 Bedingungen

Zelle einfärben bei 3 Bedingungen
19.07.2004 11:20:49
Torsten
Hallo zusammen,
folgendes Problem übersteigt meine bescheidenen VBA-Fähigkeiten:
In der Spalte B steht entweder eine 1 oder eine 0. In Spalte D und F steht entweder ein "ok" oder ein "Nicht vorhanden".
Nun möchte ich, daß die Zelle der Spalte B nur dann rot eingefärbt wird (Interior.ColorIndex = 3), wenn in der Zelle selbst eine "1" steht und in den beiden anderen Zellen der Spalten D und F "Nicht vorhanden" steht.
Der Range erstreckt sich von Zeile 2 bis 7.000.
Könnt Ihr mir weiterhelfen?
Den Ansatz für eine Bedingung habe ich schon:

Sub EinsRot()
Dim Zelle As Range
For Each Zelle In Range("B1:B7000")
Zelle.Interior.ColorIndex = xlNone
If Zelle.Value = 1 Then
Zelle.Interior.ColorIndex = 3
End If
Next Zelle
End Sub

Vielen Dank im voraus.
Gruß
Torsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle einfärben bei 3 Bedingungen
19.07.2004 11:27:29
joel
hallo torsten
wieso nicht mit bedingter formatierung?
ansonsten z.b. mit
for i = 1 to 7000
with tabelle1
if .cells(i,2).value = 1 AND _
.cells(i,4).value = "Nicht vorhanden" AND _
.cells(i,6).value = "Nicht vorhanden" then
.cells(i,2).interior.colorindex = 3
end if
end with
next i
damit du diese funktion jedoch nicht bei jedem "worksheet_change" ereignis aufrufen musst, löse das besser mit bedingter formatierung.
gruss joel
AW: Zelle einfärben bei 3 Bedingungen
Ramses
Hallo torsten
Ungetestet,... sollte aber tun
Dim Zelle As Range
For Each Zelle In Range("B1:B7")
Zelle.Interior.ColorIndex = xlNone
If Zelle.Value = 1 And Zelle.Offset(0, 2) = "Nicht vorhanden" And Zelle.Offset(0, 4) = "Nicht vorhanden" Then
Zelle.Interior.ColorIndex = 3
End If
Next Zelle
Gruss Rainer
Anzeige
Vielen Dank Euch beiden - Passt!! Gruß Torsten oT
Torsten
Hallo Ihr beiden - Fehler - Bitte Rückmeldung
19.07.2004 13:24:04
Torsten
Hallo Ihr beiden,
leider habe ich bei Euren beiden Codes Fehlermeldungen erhalten:
"Laufzeitfehler 13; Typen unverträglich"
Die Codes:

Private Sub cmb_Test_Click()
Dim i As Integer
Dim ws As Worksheet
Set ws = Sheets("Tabelle1")
For i = 2 To 7000
With ws
.Cells(i, 19).Interior.ColorIndex = xlNone
If Cells(i, 19).Value = 1 And _
Cells(i, 20).Value = "nicht vorhanden" And _
Cells(i, 22).Value = "nicht vorhanden" Then
Cells(i, 19).Interior.ColorIndex = 3
End If
End With
Next i
End Sub

bzw.

Private Sub cmb_Test_Click()
Dim Zelle As Range
For Each Zelle In Range("S2:S7000")
Zelle.Interior.ColorIndex = xlNone
If Zelle.Value = 1 And Zelle.Offset(0, 2) = "nicht vorhanden" _
And Zelle.Offset(0, 4) = "nicht vorhanden" Then
Zelle.Interior.ColorIndex = 3
End If
Next Zelle
End Sub

Merkwürdigerweise laufen die Codes in meiner kleinen Testdatei durch.
In der Datei meiner Kollegin bleiben Sie an der Stelle der Wenn-Prüfung mit der o.g. Fehlermeldung hängen. Habt Ihr eine Idee, woran das liegen könnte?
Vielen Dank für Eure Bemühungen.
Gruß
Torsten
Anzeige
AW: Hallo Ihr beiden - Fehler - Bitte Rückmeldung
19.07.2004 13:34:01
joel
hallo torsten

Private Sub cmb_Test_Click()
Dim i As Integer
Dim ws As Worksheet
Set ws = Sheets("Tabelle1")
For i = 2 To 7000
With ws
.Cells(i, 19).Interior.ColorIndex = xlNone
If .Cells(i, 19).Value = 1 And _
.Cells(i, 20).Value = "nicht vorhanden" And _
.Cells(i, 22).Value = "nicht vorhanden" Then
.Cells(i, 19).Interior.ColorIndex = 3
End If
End With
Next i
End Sub

nach der with-anweisung solltest du jeweils vor "cells" den punkt einfügen (vgl. obiger code)
dann prüfe, ob die tabelle wirklich "Tabelle1" heisst (codename im vb-editor)
falls es noch immer nicht klappt, präzisiere doch den fehler (welche zeile, welche fehlermeldung)
gruss joel
Anzeige
AW: Hallo Ihr beiden - Fehler - Bitte Rückmeldung
19.07.2004 13:52:13
Torsten
Hallo Joel,
zunächst einmal vielen Dank für Deine prompte Rückmeldung.
Die Punkte vor dem "cells(...)" habe ich in der Tat übersehen. Nach der Korrektur läuft der Code aber trotzdem nicht durch. Excel bleibt hängen an der Stelle
"..If Cells(i, 19).Value = 1 And _
Cells(i, 20).Value = "nicht vorhanden" And _
Cells(i, 22).Value = "nicht vorhanden" Then
Cells(i, 19).Interior.ColorIndex = 3"
und markiert den gesamten Bereich gelb mit der bereits beschriebenen Fehlermeldung.
Das Tabellenblatt im VB-Editor heißt "Tabelle3" (in der Datei "ZE"). Mit "Set ws = Sheets("Tabelle3")" statt "ZE" läuft der Code zwar durch, es passiert aber nichts im Sheet("ZE").
Weißt Du noch Rat?
Gruß
Torsten
Anzeige
sorry, mein fehler
19.07.2004 14:16:31
joel
hallo torsten
sorry, jetzt hab ich bullshit erzählt..
entweder: sheets("ZE").cells(...
oder: tabelle3.cells(...
oder: sheets(3).cells
variante 1 hat den nachteil, dass der code nicht mehr funtzt, sobald der user den namen des blatte ändert (was durchaus geschehen kann)
variante 2 finde ich die beste, weil der user den codenamen des blattes nicht direkt ändern kann.
variante 3 ist eher schlecht, weil die nummerierung des blattes nur indirekt in erfahrung gebracht werden kann.
dein problem war, dass er das blatt ("Tabelle3") nicht finden konnte (logisch) und deshalb bei der eigenschaft ".cells" scheiterte, weil diese ja logischerweise auch nicht existiert
gruss joel
Anzeige
AW: Kein Problem
19.07.2004 16:56:23
Torsten
Hallo Joel,
nach den Anpassungen läuft der Code unmehr einwandfrei.
Vielen Dank für Deine Unterstützung.
Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige