Clever-Excel-Forum

Normale Version: zweidimensionale Case - Bedingung?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
brauch mal wieder eure Hilfe!

Also, ich hab mir einen Code geschrieben, der mir eine Tabelle generiert in der mehere Zeilen(Überschriften) andersfarbig dargestellt werden.

Sieht folgendermaßen aus:


Code:
Dim i, j As Integer
Dim farbnummer As Integer


Sub TabTeil02()
'unterer Teil der Editiertabelle

For j = 3 To 12 ' ----------------------------------Spaltenzähler

   For i = 12 To 23 '-------------------------------Zeilenzähler
   
       Select Case i
             Case 12, 17, 20
             farbnummer = 12 'dunkelblau
             Case Else
             farbnummer = 56 'weiß
       End Select
             
       Cells(i, j).Select
       Call Zelleanzeigen
       
   Next i
   
Next j
End Sub

Private Sub Zelleanzeigen()

   With Selection
       .Interior.ColorIndex = farbnummer
       .Borders(xlEdgeLeft).LineStyle = xlContinuous
       .Borders(xlEdgeTop).LineStyle = xlContinuous
       .Borders(xlEdgeBottom).LineStyle = xlContinuous
       .Borders(xlEdgeRight).LineStyle = xlContinuous
   End With
   
End Sub



funktioniert soweit sehr gut.

Jetzt soll aber die erste Spalte in einer weiteren Farbe dargestellt werden, aber nur die weissen Felder.

anbei noch zwei, ach so, unbeliebte "Bildchen"

also so sieht's mit dem obigen code aus:

[attachment=12806]

und so solls aussehen:

[attachment=12807]

Ich möchte nocheinmal darauf hinweisen, daß die "Bildchen" lediglich zur Verdeutlichung des Problems dienen.
Hallo l...,

ersetze:

Code:
farbnummer = 56 'weiß

durch:
Code:
if j=3 then
farbnummer = ???  'weitere Farbe
else
farbnummer = 56 'weiß
end if
Code:
Sub M_snb()
   with Range("C12:L23").FormatConditions
     .Add(2, , "=or(row(C12)=12;row(C12)=17;row(C12)=20)").Interior.ColorIndex = 6
     .Add(2, , "=column(C12)=3").Interior.ColorIndex = 12
   end with
End Sub
Danke für die Tipps.

Wr noch 'ne richtige Bastelei, bis es endlich funktionierte.

Ich hab es jetzt folgendermaßen gelöst.


Code:
colAnzD = Cells(5, 12).Value
colAnzP = Cells(6, 12).Value
colAnzA = Cells(7, 12).Value
colAnzGes = colAnzD + colAnzP + colAnzA + 12


For j = 3 To 12 ' ----------------------------------------------Spaltenzähler
   For i = 12 To colAnzGes + 2 '-------------------------------Zeilenzähler
   Select Case i
       Case 12, 13 + colAnzD, 14 + colAnzD + colAnzP
           farbnummer = 12 'dunkelblau
       Case Else
           Select Case j
               Case 4
                   farbnummer = 5
               Case Else
                   farbnummer = 56
           End Select
        End Select
       
           Cells(i, j).Select
           Call Zelleanzeigen
   Next i
Next j


Verwirrend war nur, daß Spalte C, plötzlich die Nummer 4 hat.


Code:
Select Case j
               Case 4
                   farbnummer = 5
               Case Else
                   farbnummer = 56
           End Select

...liegt wahrscheinlich daran, daß hier zuvor einige Zellen miteinander verbunden wurden.
(17.08.2017, 10:02)lapunta schrieb: [ -> ]Verwirrend war nur, daß Spalte C, plötzlich die Nummer 4 hat.
...liegt wahrscheinlich daran, daß hier zuvor einige Zellen miteinander verbunden wurden.

Nur als Hinweis:
Never ever hat die  Spalte C bezogen auf das Blatt einen anderen Index als 3
Und wenn alle Zellen der gesamten Welt verbunden werden :19:
Nur wenn man z.B. so einen ... macht:
range("B:H").Columns("C").column
wird man jetzt als column den Wert 4 erhalten, da für diesen Bereich Jetzt C die Spalte D ist :05: und Weihnachten auf Ostern fällt Sleepy
Man muss immer darauf achten, auf was man sich bezieht.
Hast du meinen Vorschlag überhaupt verwendet ?