Excel Spalten einfärben
Moderator: Moderatoren
Excel Spalten einfärben
ich übergebe ein grosses Array sehr schnell ins Excel.
Nun sollte ich gezielt einige Zellen einfärben
das durchlaufen des Farbarrays und dann setzen der Farbe mittels interior.ColorIndex =afarb[nfarb]
dauert ewig (bis ca 1 Std.)
wie kann ich die Farben auf einen schlag setzen analog value:=a_daten.
alle Versuche enden bei mir zur Laufzeit mit der Fehlermeldung falscher dateitype
eine Alternative wäre eventuell ein macro das die Zellen anhand ihres Inhaltes einfärbt.
Jede Idee wie man aus xbase ein macro in Excel startet ist darum heiss begehrt.
oder kennt Jemand eine andere Möglichkeit?
ich danke Euch im voraus
P. Jossi
Nun sollte ich gezielt einige Zellen einfärben
das durchlaufen des Farbarrays und dann setzen der Farbe mittels interior.ColorIndex =afarb[nfarb]
dauert ewig (bis ca 1 Std.)
wie kann ich die Farben auf einen schlag setzen analog value:=a_daten.
alle Versuche enden bei mir zur Laufzeit mit der Fehlermeldung falscher dateitype
eine Alternative wäre eventuell ein macro das die Zellen anhand ihres Inhaltes einfärbt.
Jede Idee wie man aus xbase ein macro in Excel startet ist darum heiss begehrt.
oder kennt Jemand eine andere Möglichkeit?
ich danke Euch im voraus
P. Jossi
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
immer schön in Excel mit "Macro aufzeichnen" was man tun will (eventuell muss man sich die "Entwicklertools" noch freischalten) und dann ansehen wie der VB-Code ansieht:
* Hintergrund mit GELB einfärben
* Zeichenfarbe in ROT darstellen
ich übersetze mal aus der Hüfte ...
Die Anweisungen .Select und Selection. sind vermutlich VB Schleifenelemente auf die Anzahl der selektierten Zeilen:
* Hintergrund mit GELB einfärben
Code: Alles auswählen
Range("A1:A6").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Code: Alles auswählen
Range("A2").Select
With Selection.Font
.Color = -16777024
.TintAndShade = 0
End With
Code: Alles auswählen
oExcel := CreateObject("Excel.Application")
IF Empty( oExcel )
MsgBox( "Excel ist nicht installiert" )
RETURN
ENDIF
oExcel:DisplayAlerts := .F.
oExcel:visible := .T.
cDir := CurDrive()+":\"+CurDir()
oBook := oExcel:workbooks:Add() // oder öffnen ?
oSheet := oBook:ActiveSheet
oSheet:PageSetup:Orientation := xlLandscape // Ausrichtung
* oSheet:Columns( 2 ):NumberFormat := "0.00" // numerisch
* oSheet:Cells(nRow,1):Value := FIELD->PARTNAME // inhalte
* oSheet:Columns( 1 ):AutoFit() // automatische Breite
* ? oBook:FullName
// Gelber Hintergrund
oRange := oSheet:Range("A1:A6")
oRange:Interior:Pattern = xlSolid // eventuell auch oRange:Pattern direkt
oRange:Interior:PatternColorIndex = xlAutomatic
oRange:Interior:Color = 65535
oRange:Interior:TintAndShade = 0
oRange:Interior:PatternTintAndShade = 0
// Rote Schrift
oRange := oSheet:Range("A2")
oRange:Font:Color = -16777024
oRange:Font:TintAndShade = 0
oBook:SaveAs(cDir+"\MyExcel.xls",xlWorkbookNormal) // kompatibles Format oder anderes
oExcel:Quit()
oExcel:Destroy()
Code: Alles auswählen
?.Select
With Selection.?
Gruß
Hubert
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben
Hallo,
ich hänge mich nochmal an diesen etwas älteren Beitrag weil der mein Probem schon halber löst
Die Fragen die allerdings noch bleiben:
- wie erhalte ich die Farbwerte für z.B. Grün oder Blau?
- wie kann ich die Schriftattribute (Größe oder z.B. fett) für bestimmte Zellen setzen?
PS.: von VB habe ich absolut keine Ahnung...
ich hänge mich nochmal an diesen etwas älteren Beitrag weil der mein Probem schon halber löst
Die Fragen die allerdings noch bleiben:
- wie erhalte ich die Farbwerte für z.B. Grün oder Blau?
- wie kann ich die Schriftattribute (Größe oder z.B. fett) für bestimmte Zellen setzen?
PS.: von VB habe ich absolut keine Ahnung...
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Excel Spalten einfärben
Hallo, Peter -
wie schon geschrieben: einfach in Excel die Makro-Aufzeichnung starten, eine Zelle so, eine andere so einfärben, Aufzeichnung beenden, Makro mit dem Makroeditor anschauen. Da findest Du die Werte, die Du brauchst.
wie schon geschrieben: einfach in Excel die Makro-Aufzeichnung starten, eine Zelle so, eine andere so einfärben, Aufzeichnung beenden, Makro mit dem Makroeditor anschauen. Da findest Du die Werte, die Du brauchst.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
Ich kenne nur ausprobieren, als in Excel Entwicklertools unter Optionen anzeigen, Macro aufzeichnen,
dabei GELB GRÜN ROT etc. als Text in Zellen schreiben und einfärben.
Macro speichern und Macro anzeigen lassen, das VB in Excel eignet sich dafür ...
dabei GELB GRÜN ROT etc. als Text in Zellen schreiben und einfärben.
Macro speichern und Macro anzeigen lassen, das VB in Excel eignet sich dafür ...
Gruß
Hubert
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben
Danke für die Antworten, das hatte ich schon so ähnlich befürchtet.
Ich hatte die Hoffung, dass jemand sich schon eine Übersicht mit den entsprechnden Werten erstellt hat
Ich hatte die Hoffung, dass jemand sich schon eine Übersicht mit den entsprechnden Werten erstellt hat
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Spalten einfärben
wie wäre es mal Google zu fragen : "excel colorindex"peternmb hat geschrieben:Ich hatte die Hoffung, dass jemand sich schon eine Übersicht mit den entsprechnden Werten erstellt hat
https://msdn.microsoft.com/de-de/librar ... 40443.aspx
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
Es geht einfacher ... auf Jimmys Seite gibt es eine Erklärung zur Color Eigenschaft:
ROT == { 255,0,0 }
Grün == { 0,255,0 }
Blau == { 0,0,255 }
Weiß == { 255,255,255 }
Schwarz == {0,0,0}
etc.
Wenn man die aus der Palette will, ist das mit dem Index wohl besser, ich weiß aber nicht ob die Palette immer gleich ist.
Code: Alles auswählen
myChart.Axes(xlValue).TickLabels.Font.Color = RGB(0, 255, 0)
Code: Alles auswählen
RGB Farbfunktionen haben wir auch ...
GraMakeRGBColor( <aRGB> ) --> nRGBColor | NIL
Parameter
<aRGB> := { nRed, nGreen, nBlue }
<aRGB> ist ein Array mit drei Elementen, das numerische Werte für die Intensität der Farben Rot, Grün und Blau enthält.
Die Farbe <nColorIndex> wird gemäß der Intensität dieser drei Farben gemischt.
Die Intensität einer der drei Farben wird durch Werte zwischen 0 und 255 definiert.
Grün == { 0,255,0 }
Blau == { 0,0,255 }
Weiß == { 255,255,255 }
Schwarz == {0,0,0}
etc.
Wenn man die aus der Palette will, ist das mit dem Index wohl besser, ich weiß aber nicht ob die Palette immer gleich ist.
Gruß
Hubert
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben
Irgendetwas verstehe ich da nicht so richtig
Wie komme ich da mit RGB zu dem Wert -16777024???* Zeichenfarbe in ROT darstellen
Range("A2").Select
With Selection.Font
.Color = -16777024
.TintAndShade = 0
End With
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
Das Minus kommt von unserer Darstellung (Xbase kennt nur LONG), tatsächlich müsste es ein DWORD sein, beides 32 bit integer ... also 4 Byte im Speicher.
Excel über ActiveX setzt das dann richtig um. Ist also nur eine Anzeige Sache
Excel über ActiveX setzt das dann richtig um. Ist also nur eine Anzeige Sache
Gruß
Hubert
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben
Dann müsste es doch so funktionieren:
Die Schrift bleibt aber schwarz
Code: Alles auswählen
// Rote Schrift
oRange := oSheet:Range("B1:B6")
//oRange:Font:Color = -16777024
oRange:Font:Color = GraMakeRGBColor(255, 0, 0)
oRange:Font:TintAndShade = 0
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Spalten einfärben
zunächst ist deine Syntax falsch.peternmb hat geschrieben:Dann müsste es doch so funktionieren:Die Schrift bleibt aber schwarzCode: Alles auswählen
//oRange:Font:Color = -16777024 oRange:Font:Color = GraMakeRGBColor(255, 0, 0) // falsche Syntax für ein RGB Array
dann solltest du dir c:\ALASKA\XPPW32\Source\SYS\GraSys.prg ansehen wie GraMakeRGBColor() funktioniert.
da Excel einen negativen Wert haben möchte wäre der Code folgendermassen
Code: Alles auswählen
oRange:Font:Color = GraMakeRGBColor({255, 0, 0})-(256*256*256)
gruss by OHR
Jimmy
Jimmy
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben
Ja klar ist ja ein Array, da habe ich die geschweiften Klammern vergessen - Danke .
Ich habe den Wert für das Rot aus dem Beispiel von Hubert übernommen - im Moment bin ich noch am experimentieren.
Doch woher weiß ich ob bzw. wann Excel einen negativen Wert erwartet?
Ich habe den Wert für das Rot aus dem Beispiel von Hubert übernommen - im Moment bin ich noch am experimentieren.
Doch woher weiß ich ob bzw. wann Excel einen negativen Wert erwartet?
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
Am Einfachsten einmal bei Excel abfragen (Macro) und DEFINES setzen
Igentlich sollten die Werte automatisch negativ sein, wenn das 32. Bit gesetzt wurde.
Igentlich sollten die Werte automatisch negativ sein, wenn das 32. Bit gesetzt wurde.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Spalten einfärben
Ich hab mich geirrt, der Zahlenbereich von RGB Zahlen ist zu nieder um überhaupt in negative Werte zu rutschen ...
Keine Ahnung warum Excel das negativ braucht.An RGB value is a long integer value in the range of 0 to &H00FFFFFF.
Gruß
Hubert
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Excel Spalten einfärben [erledigt]
Ich habe mittlerweile gemerkt, dass es auch mit positiven Zahlen problemlos funktioniert.brandelh hat geschrieben:Keine Ahnung warum Excel das negativ braucht.
Auch das Festlegen von Schriftstil und Schriftgröße ist recht simpel:
Code: Alles auswählen
oRange := oSheet:Range("A1:A10")
oRange:Font:Bold = .T.
oRange:Font:Size = 10
//
oRange := oSheet:Range("B1:B10")
oRange:Font:Italic = .T.
oRange:Font:Size = 12
//
oRange := oSheet:Range("C1:C10")
oRange:Font:Strikethrough = .T.
oRange:Font:Size = 14