Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1120to1124
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
Inhaltsverzeichnis

select case im datenfeld

select case im datenfeld
Steffen
Guten Abend,
Ich bin seit kurzem dabei mir Funktionen mit Datenfeldern anzueignen . Doch bei einer Sache komme ich nicht zurecht. Ich möchte in einem Datenfeld Inhalte auslesen und wenn Übereinstimmungen sich ergeben soll die Zelle formatiert werden. Mit der für mich üblichen Methode "Select case" war es bisher kein Problem , nur im Datenfeld bekomme ich es nicht hin:
Dim meArray As Variant
Dim LoSpalte As Long, LoZeile As Long, i As Long
With ActiveSheet
LoSpalte = .Cells(1, Columns.Count).End(xlToLeft).Column
LoZeile = .Cells(Rows.Count, 1).End(xlUp).Row
meArray = .Range(.Cells(1, 1), .Cells(LoZeile, LoSpalte))
For i = LBound(meArray, 1) To UBound(meArray, 1)
Select Case meArray(i, 1)
Case "INACTIVE"
meArray(i, 1) = Cells(i, 1).Font.ColorIndex = 5
Case "ACTIVE"
meArray(i, 1) = Cells(i, 1).Font.ColorIndex = 10
Case "INHIBITED"
meArray(i, 1) = Cells(i, 1).Font.ColorIndex = 3
End Select
Select Case meArray(i, 7)
Case "ADVISORY"
meArray(i, 7) = Cells(i, 7).Font.ColorIndex = 2
meArray(i, 7) = Cells(i, 7).Font.Bold = True
meArray(i, 7) = Cells(i, 7).Interior.ColorIndex = 39
Case "CAUTION"
meArray(i, 7) = Cells(i, 7).Font.ColorIndex = 2
meArray(i, 7) = Cells(i, 7).Font.Bold = True
meArray(i, 7) = Cells(i, 7).Interior.ColorIndex = 46
Case "WARNING"
meArray(i, 7) = Cells(i, 7).Font.ColorIndex = 2
meArray(i, 7) = Cells(i, 7).Font.Bold = True
meArray(i, 7) = Cells(i, 7).Interior.ColorIndex = 3
End Select
Next i
.Range(.Cells(1, 1), .Cells(LoZeile, LoSpalte)) = meArray
End with
Es gibt mir dann "Falsch" in dem Datenfeld aus?!
Weiß jemand Rat?
Viele Grüße Steffen

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ein ARRAY kan man doch nicht formatieren
02.12.2009 17:59:23
NoNet
Hallo Steffen,
ein "Datenfeld" (ARRAY) ist doch lediglich ein "Container" für die Werte der Zellen.
Dieses ARRAY kann man nicht formatieren (zumindest nicht Hintergrund unf Schriftfarbe!), denn es handelt sich ja nicht um Zellen (RANGE), die eine Formatierungseigenschaft besitzen ! So formatieren wie Du es möchtest kann man nur Zellen !
Dass als Wert im ARRAY FALSCH erscheint ist logisch, denn Du übergibst als Wert des ARRAY das Ergebnis eines Vergleiches :
meArray(i, 1) = Cells(i, 1).Font.ColorIndex = 5
Der Vergleich Cells(i, 1).Font.ColorIndex = 5 ergibt entweder WAHR, wenn der Zellhintergrund der Farbe 5 entspricht, oder FALSCH, wenn der Zellhintergrund NICHT der Farbe 5 entspricht.
Da Deine Zellen vermutlich nicht dunkelblau formatiert sind, ergibt das für alle/die meisten Zellen den Wert FALSCH !
Gruß, NoNet
Anzeige
Das hab ich mir schon fast gedacht..
02.12.2009 18:32:58
Steffen
NoNet & Luc?-danke für die Ausführungen!
besteht denn überhaupt die Möglichkeit mit "select case" im Datenfeld eine Auswertung vorzunehmen ? Ich bin von der Schnelligkeit der Arraymethode begeistert und da ich sehr viele Daten zum auswerten habe währe diese Methode für mich die beste.
Grüße Steffen
P.S bastel grad noch an einer Kurzversion zum uploaden...
...Ja, sicher! Kommt ganz darauf an,...
03.12.2009 03:45:47
Luc:-?
...Steffen,
was du machen bzw vgl willst, denn darauf läuft das ja immer hinaus. Man kann fast alles in ein Feld laden, nur eben nicht fertig formatierte Zellen; also entweder die Inhalte oder die Fmln oder Formatangaben, also Farbwerte, Schriftgrößen usw → also Daten!.
Falls sich auch Objekte (eine komplett formatierte Zelle wäre so etwas) in ein Feld laden lassen sollten (kann ich gerade nicht verifizieren), dürfte das dann aber kaum schneller sein!
Gruß Luc :-?
Anzeige
Objekte in Feldern wohl nur als Referenz! owT
03.12.2009 03:49:01
Luc:-?
:-?
Luc?-Danke! hat mich wieder ein Stück
03.12.2009 15:21:06
Steffen
weiter gebracht im Lehrnfaktor! Ich find die ganze Arraygeschichte unheimlich interessant!
Viele Grüße
Steffen
Das ist ja auch zu erwarten,...
02.12.2009 18:02:32
Luc:-?
...Steffen,
denn du weist ja den Elementen deines Feldes meArray Wahrheitswerte zu!
Bsp: meArray(i, 7) = Cells(i, 7).Font.ColorIndex = 2
...bedeutet nichts anderes als die Frage, ob der Farbindex der Zelle(i,7)=2 ist. Ist er das nicht, erhält Element(i,7) des Feldes den Wert False, sonst True. Wenn du was anderes willst, musst du auch was anderes machen... ;-)
...Aber das können wir ja so nicht wissen!
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige