Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zelle bei einfachem Klick einfärben

516 views
Skip to first unread message

Ingrid Kutsche

unread,
Nov 23, 2003, 5:17:21 PM11/23/03
to
Liebe Leute,

gerade habe ich ein Wort-such-spiel in Excel 97 nachgebaut (die
Kopiervorlage war bald nicht mehr zu lesen): In einer Matrix von 15 x 15
Zellen mit jeweils einem Buchstaben sollen die sinnvollen Worte gesucht
werden.
Da ich's nun einmal im Rechner habe, möchte ich es auch im Rechner
"spielbar" machen. Dazu möchte ich, dass die Zellen der gefundenen Worte
farbig hinterlegt werden können.

Ohne Makro mit Format übertragen kriege ich's auch hin, das ist mir aber
für die Spielenden zu schwierig.

Makros in den Ereignissen vor Doppelklick und vor Rechtsklick kriege ich
hin, das ist mir aber zu umständlich.

Wie baue ich ein Makro für einen Einfachklick?
Absolute Spitze wäre natürlich eine Variante, in der eine Farbpalette
zum Auswählen bereitsteht, so dass mittendrin auch mal die Farbe
gewechselt werden kann.

Vielleicht gibt's sowas schon?
(Die CDROM mit den vielen Mustervorlagen, die ich immer zitiere, wenn
andere eine solche Frage stellen, ist gerade wieder in der Bibliothek ;-( ).

Danke Euch!
Ingrid

Stefan Onken

unread,
Nov 24, 2003, 12:50:20 AM11/24/03
to
hallo Ingrid,
wie wärs mit SelectionChange, zB so:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim rng
rng = "A1:O15"
Range(rng).Interior.ColorIndex = 0
If Not Intersect(Target, Range(rng)) Is Nothing Then
Target.Interior.ColorIndex = 3
End If
End Sub

Ein (nicht gerade triviales) Beispiel für einen Farbauswahl-Dialog findest
du hier:
http://schwimmer.bei.t-online.de/vba071.htm

Gruß
stefan


"Ingrid Kutsche" <Ingrid...@web.de> schrieb im Newsbeitrag
news:3FC131F1...@web.de...

Christian Küken

unread,
Nov 24, 2003, 12:52:30 AM11/24/03
to
Am Sun, 23 Nov 2003 23:17:21 +0100 schrieb Ingrid Kutsche:

> Wie baue ich ein Makro für einen Einfachklick?
> Absolute Spitze wäre natürlich eine Variante, in der eine Farbpalette
> zum Auswählen bereitsteht, so dass mittendrin auch mal die Farbe
> gewechselt werden kann.

> Vielleicht gibt's sowas schon?
> (Die CDROM mit den vielen Mustervorlagen, die ich immer zitiere, wenn
> andere eine solche Frage stellen, ist gerade wieder in der Bibliothek ;-( ).

Es gibt ein Ereignis, das Du in dem Code zu Deinem Workbook abfangen
kannst:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Der Code unterhalb dieses Ereignisses wird jedesmal ausgeführt, wenn Du den
Focus auf eine neue Zelle setzt.

Warum hast Du das nicht einfach mit einem Formular gemacht? Da hättest Du
bessere und übersichtlichere Möglichkeiten gehabt das Design anhand von
Mauseingaben zu verändern.


Ciao CHRiSTiAN.

--
..// LiFE iS CRUeL WiTHoUT SoUND
..// EOT

Ingrid Kutsche

unread,
Nov 24, 2003, 1:43:30 AM11/24/03
to
Hallo Christian,

>> Wie baue ich ein Makro für einen Einfachklick?
>> Absolute Spitze wäre natürlich eine Variante, in der eine Farbpalette
>> zum Auswählen bereitsteht, so dass mittendrin auch mal die Farbe
>> gewechselt werden kann.
>

> Es gibt ein Ereignis, das Du in dem Code zu Deinem Workbook abfangen
> kannst:
> Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
>
> Der Code unterhalb dieses Ereignisses wird jedesmal ausgeführt, wenn Du den
> Focus auf eine neue Zelle setzt.

Danke!

> Warum hast Du das nicht einfach mit einem Formular gemacht?

Weil das für mich alles andere als einfach ist...

Da hättest Du
> bessere und übersichtlichere Möglichkeiten gehabt das Design anhand von
> Mauseingaben zu verändern.

Meinst du wirklich, dass das für ein kleines Spiel geeignet ist? Ich
hätte ja gern auch die Möglichkeit, mitten im Spiel die Farbe zu ändern,
weil doch fast alle Buchstaben zu einem sinnvollen Wort gehören.

Ohne Makro würde ich es so machen:
Tabelle mit den möglichen Farben. Zum Wechseln Klick auf die gewünschte
Zelle, Doppelklick auf den Pinsel, und weiter gehts.
Diesen Doppelklick würde ich eben nun gern automatisieren bzw. ersetzen.

Ingrid

Ingrid Kutsche

unread,
Nov 24, 2003, 1:46:43 AM11/24/03
to
Hallo Stefan,

vielen Dank! Michaels Beispiel guck ich mir heute abend an.

Ich werde für den Anfang einfach ActiveCell.Interior.ColorIndex=
malsehenwas nehmen (was dann in deinem Code noch kommt, verstehe ich
doch schon wieder nicht mehr ;-( ).
Aber da fehlt mir dann noch der Farbwechsel. Na, ich guck heute abend
mal in Ruhe...

Ingrid

> hallo Ingrid,
> wie wärs mit SelectionChange, zB so:
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
> Dim rng
> rng = "A1:O15"
> Range(rng).Interior.ColorIndex = 0
> If Not Intersect(Target, Range(rng)) Is Nothing Then
> Target.Interior.ColorIndex = 3
> End If
> End Sub
>
> Ein (nicht gerade triviales) Beispiel für einen Farbauswahl-Dialog findest
> du hier:
> http://schwimmer.bei.t-online.de/vba071.htm

>> gerade habe ich ein Wort-such-spiel in Excel 97 nachgebaut (die

stefan onken

unread,
Nov 24, 2003, 2:42:18 AM11/24/03
to
hi Ingrid,
der Code macht folgendes:

Dim rng
rng = "A1:O15"
Range(rng).Interior.ColorIndex = 0

Bei jedem Zellenwechsel wird die Füllfarbe in dem Bereich
A1:O15 weiß

If Not Intersect(Target, Range(rng)) Is Nothing Then
Target.Interior.ColorIndex = 3
End If

Wenn die angeklickte Zelle innerhalb des Bereiches A1:O15
ist, wird die Zelle rot gefüllt.

Gruß
stefan

>-----Originalnachricht-----

>.
>

Ingrid Kutsche

unread,
Nov 24, 2003, 5:05:43 PM11/24/03
to
Hallo Stefan,

vielen Dank.

> der Code macht folgendes:
> Dim rng
> rng = "A1:O15"
> Range(rng).Interior.ColorIndex = 0
>
> Bei jedem Zellenwechsel wird die Füllfarbe in dem Bereich
> A1:O15 weiß

Das soll sie aber nicht. Sie soll so bleiben - es sollen doch die
gefundenen Worte markiert werden und markiert bleiben. Sonst sieht man
doch schlecht, was man schon gefunden hat.


>
> If Not Intersect(Target, Range(rng)) Is Nothing Then
> Target.Interior.ColorIndex = 3
> End If
>
> Wenn die angeklickte Zelle innerhalb des Bereiches A1:O15
> ist, wird die Zelle rot gefüllt.

Diese doppelte Verneinung habe ich immer noch nicht verstanden. Aber sie
bewirkt, dass die angeklickte Zelle nur dann rot wird, wenn sie im
vorher festgelegten Bereich liegt, nicht?

Das, was ich mir so einfach vorgestellt hatte - den Doppelkick auf den
Formatübertragungspinsel durch VBA zu ersetzen -, scheint also ganz
schön schwierig zu sein, oder? Dann muss ich eben eine
Handlungsanweisung neben die Farbpalette setzen.

Ingrid

Thomas Ramel

unread,
Nov 25, 2003, 1:04:36 AM11/25/03
to
Grüezi Ingrid

Ingrid Kutsche schrieb:


>
> gerade habe ich ein Wort-such-spiel in Excel 97 nachgebaut (die
> Kopiervorlage war bald nicht mehr zu lesen): In einer Matrix von 15 x 15
> Zellen mit jeweils einem Buchstaben sollen die sinnvollen Worte gesucht
> werden.
> Da ich's nun einmal im Rechner habe, möchte ich es auch im Rechner
> "spielbar" machen. Dazu möchte ich, dass die Zellen der gefundenen Worte
> farbig hinterlegt werden können.
>
> Ohne Makro mit Format übertragen kriege ich's auch hin, das ist mir aber
> für die Spielenden zu schwierig.
>
> Makros in den Ereignissen vor Doppelklick und vor Rechtsklick kriege ich
> hin, das ist mir aber zu umständlich.
>
> Wie baue ich ein Makro für einen Einfachklick?
> Absolute Spitze wäre natürlich eine Variante, in der eine Farbpalette
> zum Auswählen bereitsteht, so dass mittendrin auch mal die Farbe
> gewechselt werden kann.

Das ist doch mal wieder etwas interessantes ;-)

Vergib im Tabellenblatt 2 Bereichsnamen:

- "Spielfeld" für den Bereich mit den Buchstaben (der dann auch andere
Dimensionen als 15x15 haben kann)
- "Farben" für den Bereich mit den Farben die Du individuell von Hand
vorgeben kannst. Eine davon sollte 'unangetastet' bleiben, also keine
Farbe haben. Nach dem vorgeben der Farbwerte muss die betreffende Zelle
nochmals angeklickt werden um als Füllfarbe verwendet zu werden.

Dann Rechtsklck auf den Tabellenblattreiter --> Code anzeigen und die
folgenden Zeilen ins Codemodul des Tabellenblattes kopieren --> mit Alt+Q
den VBA-Editor wieder verlassen.
Nun kannst Du bequem eine Farbe aus der selbstgemachten Palette wählen und
per einfachem Klick oder markieren eines Bereiches ins Speilfeld
übertragen. Zum löschen der Farben einfach die leere Zelle in der Palette
anklicken und das Speilfeld komplett markieren.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static intColor As Integer
Dim rngBereich As Range


Set rngBereich = Intersect(Target, Range("Spielfeld"))
If rngBereich Is Nothing Then
Set rngBereich = Intersect(Target, Range("Farben"))
If rngBereich Is Nothing Then
Exit Sub
Else
intColor = Target.Range("A1").Interior.ColorIndex
Exit Sub
End If
End If

If intColor = 0 Then
MsgBox "Sie müssen zuerst eine Farbe aus der Palette auswählen"
Exit Sub
End If

rngBereich.Interior.ColorIndex = intColor

End Sub

--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]

Rudolf Hänni

unread,
Nov 25, 2003, 7:32:52 PM11/25/03
to
Hallo Ingrid,
Ich habe mitgelesen und ausprobiert. Wie immer hat Tomas Ramel eine geniale
Lösung bereit.
Mich würde aber noch etwas anderes interessieren: Gibst Du die einzelnen
Buchstaben zufällig ein oder hast Du dafür einen Code?
Ich baue immer wieder solche kleinst Programme für eine Schule.
Ich habe dein Beispiel nachgebaut und scheitere genau an dem oben genanntem
Problem.Die Schüler können die Buchstaben nicht selber
eingeben.(Behinderte)Wenn das Spiel einmal durchgespielt ist sollte es
möglich sein die Zellen mit einem Mausklick mit neuen Buchstaben zu füllen.
Falls das bei Dir funktioniert wäre ich für einen Tipp Dankbar.
Gruss Rudolf

"Ingrid Kutsche" <Ingrid...@web.de> schrieb im Newsbeitrag
news:3FC1A892...@web.de...

Thomas Ramel

unread,
Nov 26, 2003, 12:50:15 AM11/26/03
to
Grüezi Rudolf

Rudolf Hänni schrieb:


>
> Ich habe mitgelesen und ausprobiert. Wie immer hat Tomas Ramel eine geniale
> Lösung bereit.

Ich danke für die Blumen - und weise lieber nicht auf die weniger genialen
Lösungen hin, die ich her schon von mir gegeben habe ;-)

> Mich würde aber noch etwas anderes interessieren: Gibst Du die einzelnen
> Buchstaben zufällig ein oder hast Du dafür einen Code?

Hier schliesse ich mich an.

> Ich baue immer wieder solche kleinst Programme für eine Schule.
> Ich habe dein Beispiel nachgebaut und scheitere genau an dem oben genanntem
> Problem.Die Schüler können die Buchstaben nicht selber
> eingeben.(Behinderte)Wenn das Spiel einmal durchgespielt ist sollte es
> möglich sein die Zellen mit einem Mausklick mit neuen Buchstaben zu füllen.
> Falls das bei Dir funktioniert wäre ich für einen Tipp Dankbar.

Eine Einfachst-Lösung ist die folgende Formel in allen Zellen des Spielfeldes:

=ZEICHEN(QUOTIENT(ZUFALLSZAHL()*26;1)+65)

Mittels F9 kannst Du so immer neue zufällige Kombinationen generieren.
Das Einfärben der Zellen mittels des Makros hat keinen Einfluss auf die
Neuberechnung, weshalb die Buchstaben auch stehenbleiben.

Ingrid Kutsche

unread,
Nov 26, 2003, 2:07:41 AM11/26/03
to
Hallo Rudolf,

> Ich habe mitgelesen und ausprobiert. Wie immer hat Tomas Ramel eine geniale
> Lösung bereit.

Das finde ich auch! Ich habe die Geschichte noch ein klein wenig
ausgebaut: die Liste der zu findenden Worte hinzugefügt, die auch
gefärbt werden kann, und die "Entfärbung" per Schaltfläche realisiert.

> Mich würde aber noch etwas anderes interessieren: Gibst Du die einzelnen
> Buchstaben zufällig ein oder hast Du dafür einen Code?

Weder noch. Ich habe ein vorhandenes Beispiel abgetippt. (Ausgangspunkt
war ja, dass diese Vorlage nicht mehr zu kopieren war). Für mich hatte
ich überlegt, das Blatt im ganzen zu kopieren und weiteres "Wirrwarr"
für die anderen Blätter zu erfinden/erfinden zu lassen (Ich habe einen
sehr knobelfreudigen Neffen). So könnte mit einem Klick auf die anderen
Blätter gewechselt werden.

Soll ich dir meine Datei mal schicken? (Da hast du wenigstens _einen_
Ausgangspunkt...)

> Ich baue immer wieder solche kleinst Programme für eine Schule.
> Ich habe dein Beispiel nachgebaut und scheitere genau an dem oben genanntem
> Problem.Die Schüler können die Buchstaben nicht selber
> eingeben.(Behinderte)Wenn das Spiel einmal durchgespielt ist sollte es
> möglich sein die Zellen mit einem Mausklick mit neuen Buchstaben zu füllen.

Ingrid

Ingrid Kutsche

unread,
Nov 26, 2003, 2:16:34 AM11/26/03
to
Grüezi Thomas,

ich bin begeistert - tausend Dank!

>> Mich würde aber noch etwas anderes interessieren: Gibst Du die einzelnen
>> Buchstaben zufällig ein oder hast Du dafür einen Code?
>

Ihr überschätzt mich maßlos. Ich habe ein vorhandenes Beispiel abgetippt.
Und für das Neufüllen will ich einfach andere Kombinationen (per Kopf,
ohne Rechner) erfinden und auf weitere Blätter verteilen. Das hat
natürlich den Nachteil, dass das Spiel nicht "uferlos" neue Varianten
bieten kann.
Vielleicht machen wir uns gemeinsam auf die Suche, ob schon einer z. B.
Kreuzworträtsel-Generierung mit Excel geschafft hat?

Denn die Zufallsbuchstaben haben auch ihren Reiz, aber den Nachteil,
dass man die zu findenden Worte dem Spieler nicht als Hilfe vorgeben
kann. (Mein Beispiel hat in 15x15 Zellen 30 Eissorten - ich habe sie
bisher noch nicht alle entdeckt und würde ohne diese Wortliste sie auch
nicht alle finden.) Nun kommt es darauf an, was Rudolf vorrangig
erreichen will: sollen die Schüler möglichst alle vorgegebenen Worte
finden oder sollen sie möglichst kreativ eigene finden?

Ingrid

Rudolf Hänni

unread,
Nov 26, 2003, 1:08:50 PM11/26/03
to
Hallo Ingrid,
Ich nehme dein Angebot gerne an, wenn Du mir deine Datei schicken kannst
erspart mir dass eine menge Arbeit.

Gruss Rudolf
"Ingrid Kutsche" <Ingrid...@web.de> schrieb im Newsbeitrag
news:3FC4513D...@web.de...

Rudolf Hänni

unread,
Nov 26, 2003, 1:13:05 PM11/26/03
to
Hallo Tomas,
Warum so bescheiden?
Ich habe von Dir schon oft Lösungen für irgend ein Problem bekommen, eine
schlechte war nicht darunter.
Das alles wird noch wesentlich aufgewertet, wenn man bedenkt, dass Du und
die anderen guten Geister diesen super Service umsonst anbieten.
Vielen Dank.
Gruss Rudolf
"Thomas Ramel" <t.r...@MVPs.org> schrieb im Newsbeitrag
news:3FC43F17...@MVPs.org...

Thomas Ramel

unread,
Nov 27, 2003, 12:19:49 AM11/27/03
to
Grüezi Rudolf

Rudolf Hänni schrieb:
>

> Warum so bescheiden?
> Ich habe von Dir schon oft Lösungen für irgend ein Problem bekommen, eine
> schlechte war nicht darunter.
> Das alles wird noch wesentlich aufgewertet, wenn man bedenkt, dass Du und
> die anderen guten Geister diesen super Service umsonst anbieten.
> Vielen Dank.

Aber bitte, das geschieht gerne - es macht Spass zu helfen, speziell wenn
die Hilfe auch geschätzt wird und das Klima so angenehm wie hier in der NG ist.

Ich nehme das Lob und den Dank im Namen aller Helfer (ob erst seit Kurzem
oder schon länger tätig) entgegen.

Thomas Ramel

unread,
Nov 27, 2003, 12:20:54 AM11/27/03
to
Grüezi Ingrid

Rudolf Hänni schrieb:


>
> Ich nehme dein Angebot gerne an, wenn Du mir deine Datei schicken kannst
> erspart mir dass eine menge Arbeit.

Da schliesse ich mich doch auch gleich an, wenn Du so gut sein willst.

Eberhard Funke

unread,
Nov 28, 2003, 10:53:55 AM11/28/03
to
Hallo Ingrid & Thomas

Ingrid Kutsche <Ingrid...@web.de> schrieb:

>Grüezi Thomas,
>
[........]


>
>Denn die Zufallsbuchstaben haben auch ihren Reiz, aber den Nachteil,
>dass man die zu findenden Worte dem Spieler nicht als Hilfe vorgeben
>kann. (Mein Beispiel hat in 15x15 Zellen 30 Eissorten - ich habe sie
>bisher noch nicht alle entdeckt und würde ohne diese Wortliste sie auch
>nicht alle finden.)

[...........]

Wenn ich Ingrid's Wunsch richtig verstehe, dann soll eine Liste von
Worten (z. B, die Eissorten) vorgegeben und die Buchstaben zufällig in
der "Spieltabelle" verteilt werden. Vielleicht habe ich das in dem
Thread übersehen, aber das scheint mir noch zu fehlen.

Ich habe daran gebastelt, mir fehlt aber an einer Stelle die richtige
Textfunktion (s. u. <========).

Folgender Ansatz:

Die Namen der Eissortenwerden zu einem String aneinandergehängt .
Die Buchstaben des String sollen dann nach Zufall ausgelesen, in die
Tabelle eingefügt (für letzteres steht vorläufig Debug.Print) und
anschließend jeweils aus dem String gelöscht werden.


strWort = "VANILLEMALAGAZITRONE........usw.......""
Do
lngPos = Int((Len(strWort) - 1) * Rnd + 1)
Debug.Print Mid(strWort, lngPos, 1)
Mid(strWort, lngPos, 1) = "" ' <==========
Loop Until Len(strWort) = 0

An der gekennzeichneten Stelle soll der zuvor ausgelesene Buchstabe
gelöscht und der String entsprechend verkürzt werden. Das funktioniert
leider nicht, Der Buchstabe läßt sich z. B. durch "X" ersetzen, aber
nicht durch "".
Mit SUBSTITUTE komme ich nicht weiter, weil jeweils anzugeben ist, an
wievielter Postion ein Buchstabe (bei mehrfachem Vorkommen) ersetzt
werden soll.
Hier bitte ich um Hilfe,
--
Es grüsst
Eberhard mit XL 2000

Ingrid Kutsche

unread,
Nov 28, 2003, 6:00:09 PM11/28/03
to
Hallo Eberhard,

da hast du dir ja was vorgenommen! Denn die Buchstaben sollen nicht
wirklich zufällig verteilt
werden. Waagerecht, senkrecht oder diagonal, vorwärts oder rückwärts,
muss das Wort auftauchen (lesbar sein). Wegen mir musst du dich nicht
weiter plagen. Ich bin glücklich mit meiner Möglichkeit, die gefundenen
Worte farbig markieren zu können. (Übrigens habe ich heute schon die
Datei an eine Kollegin weitergegeben, die ein Spiel zum
Konzentrationstraining für ihren Sohn suchte...).
Das Erfinden neuer "Wirrwarre" mache ich gern mit Papier und Stift...

Danke an alle! Ingrid

0 new messages