Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

liCounter . zeile bei treffer färben??

Betrifft: liCounter . zeile bei treffer färben?? von: Spenski
Geschrieben am: 16.10.2014 18:02:03

hallo habe folgenden code. der sodu durchsucht mehrere bedinungen und zählt die Abweichungen.

ist es möglich die komplette zeile eines Treffers rot zu färben???
wenn ja mag mir da jemand helfen??
bisher habe ich das mit bedingter Formatierung nachgebaut, aber die Prüfungen werden immer mehr und es wird zu unübersichtlich

Public Sub Counter()
Sheets("Control").Select
Dim lloRow As Long, liCounter As Integer

    For lloRow = 2 To 3000
    
        If Not Range("K" & lloRow).Value = "" Then 'Maschine 2
          If Range("K" & lloRow).Value < Range("H" & lloRow).Value Then
            liCounter = liCounter + 1
          End If
        End If
        
        If Not Range("A" & lloRow).Value = "" Then 'Ferigstellungstermin
          If Range("D" & lloRow).Value <= Range("H" & lloRow).Value Or Range("D" & lloRow). _
Value <= Range("K" & lloRow).Value Or Range("D" & lloRow).Value <= Range("N" & lloRow).Value  _
Then
            liCounter = liCounter + 1
          End If
        End If
        
        If Not Range("N" & lloRow).Value = "" Then 'Maschine 3
          If Range("N" & lloRow).Value <= Range("K" & lloRow).Value Then
            liCounter = liCounter + 1
          End If
        End If

        If Not Range("F" & lloRow).Value = Range("G" & lloRow).Value Then 'Anzahl KST
            liCounter = liCounter + 1
        End If
        
        If Not Range("I" & lloRow).Value = Range("Z" & lloRow).Value Then 'Kaliber
            liCounter = liCounter + 1
        End If
        
        If Range("I" & lloRow).Value <> 0 And Range("J" & lloRow).Value = "" Then 'Maschine 1
            liCounter = liCounter + 1
        End If

        If Range("L" & lloRow).Value <> 0 And Range("M" & lloRow).Value = "" Then 'Maschine 2
            liCounter = liCounter + 1
        End If

        If Range("O" & lloRow).Value <> 0 And Range("P" & lloRow).Value = "" Then 'Maschine 3
            liCounter = liCounter + 1
        End If



Next
Range("A1").Select
BlattschutzSetzen
Sheets(1).Select
Sheets(12).Select

If liCounter > 0 Then
Beep 880, 900
Beep 880, 900
Beep 880, 900
MsgBox "Anzahl Fehler : " & liCounter, vbCritical

Else
Beep 880, 900
MsgBox "Keine Fehler gefunden"
End If
End Sub

gruss
und danke fürs lesen

christian

  

Betrifft: AW: liCounter . zeile bei treffer färben?? von: Daniel
Geschrieben am: 16.10.2014 18:12:30

Hi
Variante 1:
bei jedem Treffer (dh bei jedem Hochzählen des Counters) fügst du die Zeile ein:

        If Range("O" & lloRow).Value <> 0 And Range("P" & lloRow).Value = "" Then 'Maschine 3
            liCounter = liCounter + 1
            Rows(lloRow).Interior.Color = vbRed
        End If


Variante 2:
hier prüfst du nur am Ende der Schleife, ob der Counter hochgezählt wurde und färbst dann, dann musst du nicht bei jeder Prüfung die Zeile einbauen:
Public Sub Counter()
Sheets("Control").Select
Dim lloRow As Long, liCounter As Integer, liCounterAlt as Integer

    For lloRow = 2 To 3000
        ...
        ...
        If liCounter > liCounterAlt then
           Rows(lloRow).Interior.Color = vbRed
           liCounterAlt = liCounter
        End If
    Next
...
End Sub
Gruß Daniel


  

Betrifft: AW: liCounter . zeile bei treffer färben?? von: Spenski
Geschrieben am: 16.10.2014 18:22:55

super, dank dir für die schnelle antwort


  

Betrifft: AW: liCounter . zeile bei treffer färben?? von: spenski
Geschrieben am: 17.10.2014 15:38:10

Hallo

habe es heute auf der arbeit (32bit) getestet, leider läuft es nicht. habe den fehler aufgeschrieben aber den Zettel vergessen XD.

Jetzt habe ich es aus neugier auf meinem rechner (64bit) nochmal versucht und da funktionierte es sofort.

liegt es an der version???
was mir noch gerade einfällt, dass ich 2 codes in einem modul da hatte , evtl blockiert da was den code.
werd es montag nochmal in einem eigenen modul versuchen.

würde aber schon gerade auschliessen obs an der version liegt


gruss
und schönes wochenende ;)


  

Betrifft: AW: liCounter . zeile bei treffer färben?? von: Daniel
Geschrieben am: 17.10.2014 15:49:42

Hi

das einzige was an meinem Code Versionsrelveant ist, ist dashier:

Rows(lloRow).Interior.Color = vbRed

für Versionen 2003 und früher müsste man

Rows(lloRow).Interior.ColorIndex = 3

verwenden.

Gruß Daniel


  

Betrifft: AW: liCounter . zeile bei treffer färben?? von: spenski
Geschrieben am: 17.10.2014 16:03:06

okay dank dir .

dann liegts an den sachen die schon in dem modul drin waren.
werds montag nochmal in einem eigenen modul versuchen.

danke
gruss
christian


  

Betrifft: '.Interior.Color = vbRed' ist keinesfalls ... von: Luc:-?
Geschrieben am: 17.10.2014 19:44:22

…versionsrelevant, Daniel,
denn das fktioniert in allen xlVss mindestens seit Xl9 und .Interior.ColorIndex = 3 muss auch nicht in allen Versionen vor Xl12 Rot ergeben, denn man kann die FarbTabelle editieren. Dann kann das eine ganz andere Farbe sein. Allerdings muss man dazu auch die FarbTabelle der jeweiligen Mappe benutzen, was bei UDF in ZellFmln automatisch passiert, bei SubProzeduren nicht. Da ist dann Index 3, so wie hier gezeigt, tatsächlich Rot.
Gruß, Luc :-?


  

Betrifft: AW: vbRed ist ein Sonderfall.. von: Daniel
Geschrieben am: 18.10.2014 02:25:56

im Allgemeinfall einer beliebigen Farbe (RGB(x, y, z) statt vbRed) würde in den alten Excelversionen nicht genau diese Farbe eingestellt, sondern eine ähnliche aus dem Farbindex.
Wenn die gewünschte RGB-Farbe im Farbindex vorhanden ist, dann hat man halt Glück gehabt.
von daher ist das meiner Ansicht nach schon "Versionsrelevant" auch wenns keinen Fehlerabbruch gibt.


  

Betrifft: Versionsrelevant ist tatsächlich nur eine ... von: Luc:-?
Geschrieben am: 18.10.2014 03:58:36

…x-beliebige Wunschfarbe, zB mit RGB(R, G, B) oder auch &hRRGGBB bzw einem beliebigen dezimalen Farbwert, Daniel;
da kannst du davon ausgehen, dass ich das weiß! Das hattest du aber gerade nicht geschrieben!
Neben den 8 vbEnumerationsFarben fktionieren selbstverständlich auch die 16 QBasic-Farben in allen Versionen, weil das Grundfarben sind, die mappen­farb­tabellen­unabhängig eingestellt wdn.
Alles andere läuft entweder über die Mappen­Farb­Tabelle oder die allgemeine vbFarb­Tabelle, egal ob Index oder Farbwert, nur wird bei nicht vorhandenen Farbwerten ein Farb­Tabellen­Nachbar gewählt.
Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "liCounter . zeile bei treffer färben?? "