Seite 1 von 2

Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 09:43
von bredfeld
Buongiorno
Ich bin Neuling hier und suche nach einer Lösung meines Problems.
Ich möchte gerne eine Zelle farblich z.B auf Hellgrün verändern wenn ich diese mit der Maus selektiere.
Bei Wiederholung will ich aber den alten Farbwert wieder herstellen.
Und damit das Ganze noch so ähnlich wie eine Drag and Drop aussieht möchte ich diese Zelle in eine zweite Tabelle kopieren.
So, als wenn man sich einen Warenkorb füllt.
Hat da Jemand eine Idee??

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 12:40
von F3K Total
Hallo Bredfeld,
die Sache mit dem Einfärben geht zum Beispiel mit diesem Makro:

Code: Alles auswählen

Sub S_insert_color
nbackcolor = 65280
osel = thiscomponent.currentselection
if osel.CellBackColor <> nbackcolor then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
End Sub
... das Du an das Tabellerereignis "Doppelklick" hängst.
Beim ersten Doppelklick wird die gewählte Zelle grün, beim zweiten Mal wird sie wieder weiß.
bredfeld hat geschrieben:Und damit das Ganze noch so ähnlich wie eine Drag and Drop aussieht möchte ich diese Zelle in eine zweite Tabelle kopieren.
So, als wenn man sich einen Warenkorb füllt.
Hat da Jemand eine Idee??
Wohin soll den die Zelle kopiert werden?
In die Erste Spalte, sechzehnte Zeile, oder vielleicht in die 998zigste Spalte 234546igste Zeile?
Da benötigt man schon genauere Angeaben darüber, was Du erreichen willst.

Gruß R

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 20:35
von bredfeld
Es soll in die gleiche Zelle aus der es auch herausgekommen ist.
Nur ist es halt eine andere Tabelle.

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:01
von F3K Total
jo, mit diesem Makro

Code: Alles auswählen

Sub S_insert_color_line_AG
nbackcolor = 65280'44544
osel = thiscomponent.currentselection
oaddress = osel.rangeaddress
nrow = oaddress.startrow
ncolumn = oaddress.startcolumn
nsheet = oaddress.sheet
if ncolumn < 7 then 'Spalte H hat den Spaltenindex 7
oSheet = thiscomponent.sheets(nsheet) 
oRange = oSheet.getcellrangebyposition(0,nrow,6,nrow)' die 6 ist der Spaltenindex von Spalte G
if osel.CellBackColor <> nbackcolor  then oRange.CellBackColor = nbackcolor else oRange.CellBackColor = -1
endif
End Sub
... das Du an das Tabellerereignis "Doppelklick" hängst.
Beim ersten Doppelklick in den Spalten A bis G werden die Zellen A bis G grün, beim zweiten Mal werden sie wieder weiß.

Gruß R

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:25
von Stephan
Beim ersten Doppelklick wird die gewählte Zelle grün, beim zweiten Mal wird sie wieder weiß.
Entschuldigung wenn ich das korrigiere, aber mit:

Code: Alles auswählen

if osel.CellBackColor = -1 then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
wird nichts weiß undf auch nicht unbedingt beim ersten Klick etwas grün.

Der Wert -1 steht hier für keine Hintergrundfarbe und falls hierbei eine andere Farbe eingestellt ist wird zunächst auf weiß gestellt und erst beim zweiten Doppelklick auf grün.

Dieser Hinweis nicht allein wegen der UNterschiedlichkeit in der Zellvorlage, denn dort muß dr Unterschied nicht auffallen, da optisch nicht sichtbar, sondern weil auch die Standardzellvorlage nur die generelle Farbeinstellung für den Hintergrund überlagert, welche unter EXtras-OPtionen-Darstellung-Dokumenthintergrund vorgegeben ist.


Gruß
Stephan

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:28
von F3K Total
bredfeld hat geschrieben:Es soll in die gleiche Zelle aus der es auch herausgekommen ist.
Nur ist es halt eine andere Tabelle.
Na, dann nimm dieses Makro an der gleichen Stelle um die Zelle auf die nächste Tabelle zu kopieren:

Code: Alles auswählen

Sub S_insert_color_and_copy_cell
nbackcolor = 65280'44544
osel = thiscomponent.currentselection
if osel.CellBackColor <> nbackcolor then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
SourceCellAddress = osel.CellAddress
SourceRangeAddress = osel.RangeAddress
nsheet = SourceCellAddress.sheet
TargetAddress = SourceCellAddress
TargetAddress.Sheet = nsheet+1
osheet = thiscomponent.sheets(nsheet)
osheet.copyRange(TargetAddress,SourceRangeAddress)
End Sub
Gruß R

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:49
von F3K Total
Hallo Stephan,
Stephan hat geschrieben:wird nichts weiß und auch nicht unbedingt beim ersten Klick etwas grün.
Da hast Du Recht.
Darum folgende Korrektur ...

Code: Alles auswählen

if osel.CellBackColor <> nbackcolor then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
Beim ersten Doppelklick wird der Hintergrund der gewählten Zelle grün, beim zweiten Mal erscheint sie in der aktuellen Hintergrundfarbe des Dokumentes. Ist keine Dokumentenhintergrundfarbe eingestellt, erscheint der Zellhintergrund weiß.

Gruß Rik

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:53
von balu
Hallo R,
... das Du an das Tabellerereignis "Doppelklick" hängst.
???
Ja ich gebs ja zu, ich steh ufm Schlauch und bin deshalb etwas dumm :oops: . Also bitte schön wie soll ich wo was machen? Denn ich find momentan weder Tabellenereignis, noch die Zuordnung Doppelklick.




Gruß
balu

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 22:57
von F3K Total
Hallo Balu,
das gibt es wohl erst seit 3.3.0, und du findest es bei einem Rechtsklick auf den Tabellenreiter.
Tabellenereignisse.png
Tabellenereignisse.png (6.52 KiB) 2234 mal betrachtet
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

Verfasst: So, 18.03.2012 23:25
von balu
Hallo Rik,

ja ok, das passt.
In 3.2.1 ist es nicht, und in der 3.3.0 hatte ich nicht geschaut.

Auch wenn sich bredfeld momentan nicht dazu geäußert hat, so hättest Du das durchaus etwas präziser beschreiben können. Ist jetzt aber nicht bös gemeint.
Danke für deine Antwort :).



Gruß
balu

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 09:27
von bredfeld
Das ist ja genial. Ich bin total begeistert und wenn ich ehrlich bin dann habe ich jetzt richtig Spass daran.
Vielleicht noch eine Bitte (warscheinlich nicht die Letzte) kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 09:34
von Stephan
kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?
Natürlich kann man das, und da Du ja:
und wenn ich ehrlich bin dann habe ich jetzt richtig Spass daran
kriegst Du das ja nun bestimmt auch selbst hin. Macht doch sicher auch wenig Spass sich nur immer fertige LÖsungen von anderen vorsetzen zu lassen...



Gruß
Stephan

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 16:41
von bredfeld
Bis jetzt habe ich meine Sachen auch in VBA geschrieben, aber hier tauche ich leider in eine Welt ein die mir ganz neu ist.
Vielleicht haben sie ja ein paar Tips für mich damit ich mich besser orientieren kann.
Ciao e grazie Uwe

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 16:48
von F3K Total
Hallo Balu,
balu hat geschrieben:...so hättest Du das durchaus etwas präziser beschreiben können ...
oder Du hättest mal die Suche bemüht?
z.B: hier
viewtopic.php?f=18&t=51360&p=190658&hil ... is#p190658
oder hier
Google-Suche
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 16:51
von F3K Total
Hallo Gast999
Gast999 hat geschrieben:Ich bin leider kläglich gescheitert...
Dann zeig mal Deinen Versuch, dann kann Dir vielleicht geholfen werden.
Gruß Rik