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

Schaltflächen mit wechselnder Beschriftung

712 views
Skip to first unread message

Horst Kattanek

unread,
Apr 8, 2003, 11:42:37 AM4/8/03
to
Hallo an die VBA-Spezialisten,
wie kann man den sich ändernden Inhalt einer Zelle einer Schaltfläche als
Beschriftung zuweisen?

Wer kann helfen und vielen Dank voraus!
Horts Kattanek

Monika Weber

unread,
Apr 8, 2003, 11:57:39 AM4/8/03
to
Hallo Horst,

> wie kann man den sich ändernden Inhalt einer Zelle einer Schaltfläche als
> Beschriftung zuweisen?

Ein Beispiel:

Füge aus der Symbolleiste »Steuerelement-Toolbox« eine
Schaltfläche (CommandButton) in Dein Tabellenblatt ein.

Schreibe hinter das entsprechende Tabellenblatt, wo sich
der Button drin befindet eine Ereignis-Prozedur.

Die folgende Prozedur ist so aufgebaut, dass sich jeweils
der Inhalt der Zelle A1 auf dem CommandButton
darstellt.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
CommandButton1.Caption = [A1]
End Sub

--
Es liebs Grüessli
Monika Weber [Microsoft MVP für Excel]

http://www.jumper.ch (Office Help Desk)
http://excel.codebooks.de (Das Excel-VBA Codebook)


Michael Schüller

unread,
Apr 8, 2003, 12:40:18 PM4/8/03
to
Hallo Horst,

> wie kann man den sich ändernden Inhalt einer Zelle einer Schaltfläche
> als Beschriftung zuweisen?

Zwei Nachfragen:

- wird die Zelle durch Benutzereingabe "geändert", oder durch
Neuberechnung einer in der Zelle enthaltenen Formel?

- welche Art Schaltfläche verwendest Du? Eine aus Symbolleiste
"Formular", oder eine aus "Steuerelement - Toolbox"? Könntest Du ggf.
eine aus "Steuerelement - Toolbox" verwenden?
Für "Formular" kenne ich nur eine "unsaubere" Lösung.


Alternative Lösung:
- Word-Art-Objekt mit Leerzeichen als Text erstellen
- dem Objekt das auszuführende Makro zuweisen
- Größe der Zelle "hinter" dem Objekt an die Größe des Objekts anpassen
(oder umgekehrt)
- in Zelle "hinter" dem Objekt Verweis auf die "sich ändernde Zelle"
eingeben (=A1)

Damit hättest Du eine Pseudo-Schaltfläche, die den Text der Zelle
dahinter "durchscheinen" lässt.


Schönen Gruß
--
Michael
michael....@gmx.de

Horst Kattanek

unread,
Apr 8, 2003, 3:51:31 PM4/8/03
to
Hallo Michael, habe leider falsch geantwortet,
der Tip mit der "unsauberen" Variante ist nicht schlecht, aber ich möchte
gerne ein wenig VBA verwenden. Die Zelle enthält ein WENN-Funktion, die ein
Datum
zurückgibt. Ich verwende eine Schaltfläche aus der Steuerelemente-Toolbox.
Grüße
Horst

"Michael Schüller" <michael....@gmx.de> schrieb im Newsbeitrag
news:b6uu00$jve$1...@newsreader2.netcologne.de...

Horst Kattanek

unread,
Apr 8, 2003, 3:50:14 PM4/8/03
to
Guten Abend Monika, entschuldige den Fehler mit ANTWORTEN,
Dank für die schnelle Antwort, es funktioniert, wenn in der Zelle
manuell geändert wird. In meiner Zelle habe ich eine
WENN-Funktion (=WENN(Auswertung!A3=0;"Keine Daten";Auswertung!A2) laufen,
die gibt ein Datum zurück, da geht es nicht. WARUM NICHT?
Grüße
Horst Kattanek

"Monika Weber" <Monika...@MVPs.org> schrieb im Newsbeitrag
news:#RjDtee$CHA....@TK2MSFTNGP10.phx.gbl...

Frank Arendt-Theilen

unread,
Apr 8, 2003, 4:54:21 PM4/8/03
to
Hallo Horst,
benutze das Worksheet_Calculate-Ereignis:

Private Sub Worksheet_Calculate()
CommandButton1.Caption = Range("A1").Value
End Sub

Anmerkung:
Wird das Tabellenblatt neu berechnet, wird die Beschriftung dem
Commandbutton jeweils zugewiesen.

MfG Frank
_________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
eMail: Thei...@t-online.de, Homepage: http://www.xl-faq.de

Monika Weber

unread,
Apr 9, 2003, 1:15:02 AM4/9/03
to
Hallo Horst,

> Dank für die schnelle Antwort, es funktioniert, wenn in der Zelle
> manuell geändert wird. In meiner Zelle habe ich eine
> WENN-Funktion (=WENN(Auswertung!A3=0;"Keine Daten";Auswertung!A2) laufen,
> die gibt ein Datum zurück, da geht es nicht. WARUM NICHT?

Weil Du dann keine Veränderung an der Zelle selbst
vornimmst. Du klickst nicht rein, gibst eine Zahl ein.

Für eine Berechnung ist ein anderes Ereignis erforderlich.
Verwende »Calculate«:

Private Sub Worksheet_Calculate()


CommandButton1.Caption = [A1]
End Sub

Wenn Du ein Datum zurückgeben willst, dann musst Du
das noch umwandeln (CDate):

Private Sub Worksheet_Calculate()
CommandButton1.Caption = CDate([A1])

Horst Kattanek

unread,
Apr 9, 2003, 11:29:34 AM4/9/03
to
Hallo Monika,
es geht wie verrückt, wunderbar. Danke!
Kann man die Prozedur auch veranlassen, dass bei keinem Datum ein Text (z.B.
"Keine Daten vorhanden") ausgegeben wird?

Grüße aus dem Norden
Horst


"Monika Weber" <Monika...@MVPs.org> schrieb im Newsbeitrag

news:uN1QScl$CHA...@TK2MSFTNGP12.phx.gbl...

Horst Kattanek

unread,
Apr 9, 2003, 1:11:18 PM4/9/03
to
Hallo Monika, hallo Frank!
Beide Eure Varianten funktionieren.
Nun stehe ich ein wenig dumm da, denn es ist so, wenn kein Datum vorhanden
ist soll "Keine Daten vorhanden" ausgegeben werden (geht mit Frank's
Methode) und wenn ein
Datum vorhanden ist dann soll "AUGUST 2002" ausgegeben werden (geht mit
FORMAT
bei Monika's Methode). Ich hätte aber gerne beides gemeinsam.
Habt Ihr eine gemeinsame Lösung?

Grüße aus dem Norden
Horst

"Frank Arendt-Theilen" <Thei...@t-online.de> schrieb im Newsbeitrag
news:17d69vkn4et7s2occ...@4ax.com...

Monika Weber

unread,
Apr 9, 2003, 3:17:41 PM4/9/03
to
Hallo Horst,

> Kann man die Prozedur auch veranlassen, dass bei keinem Datum ein Text
(z.B.
> "Keine Daten vorhanden") ausgegeben wird?

Versuch's mal in die Richtung:

Private Sub Worksheet_Calculate()
Dim rng As Range
Set rng = Worksheets("Auswertung").Range("A3")
If rng = 0 Or rng = "" Then
CommandButton1.Caption = "Keine Daten"
Else


CommandButton1.Caption = CDate([A1])

End If
Set rng = Nothing

Eberhard Funke

unread,
Apr 10, 2003, 9:40:50 AM4/10/03
to
On Tue, 8 Apr 2003 17:57:39 +0200, "Monika Weber"
<Monika...@MVPs.org> wrote:

Hallo Monika,

nachdem Ihr alle Probleme gelöst habt, kleckere ich mit einer ganz
trivialen Fage hinterher:


>
>Füge aus der Symbolleiste »Steuerelement-Toolbox« eine
>Schaltfläche (CommandButton) in Dein Tabellenblatt ein.
>
>Schreibe hinter das entsprechende Tabellenblatt, wo sich
>der Button drin befindet eine Ereignis-Prozedur.

Was bedeutet "hinter"?
Ich habe Deine Prozedur in das zu Tabelle1 gehörende Codefenster
einkopiert. Bei Änderung des Eintrags in A1 bleibt die Aufschrift
"CommandButton1" unverändert.
Ich hab's dann auch mal mit dem Code in einem Modul versucht, tut sich
ebenfalls nichts.


>
>Die folgende Prozedur ist so aufgebaut, dass sich jeweils
>der Inhalt der Zelle A1 auf dem CommandButton
>darstellt.
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address <> "$A$1" Then Exit Sub
> CommandButton1.Caption = [A1]
>End Sub
>
>--
>Es liebs Grüessli
>Monika Weber [Microsoft MVP für Excel]
>
>http://www.jumper.ch (Office Help Desk)
>http://excel.codebooks.de (Das Excel-VBA Codebook)

Ich zackere gerade an den Ereignisprozeduren rum aber komme damit noch
nicht klar.

--
Als XL-Lehrling grüßt
Eberhard mit XL 2000

Monika Weber

unread,
Apr 10, 2003, 10:57:44 AM4/10/03
to
Hallo Eberhard,

> Was bedeutet "hinter"?
> Ich habe Deine Prozedur in das zu Tabelle1 gehörende Codefenster
> einkopiert. Bei Änderung des Eintrags in A1 bleibt die Aufschrift
> "CommandButton1" unverändert.

Du machst das schon richtig.

Ich gehe mal davon aus, dass Du eine Schaltfläche aus
der »Steuerelement-Toolbox« genommen hast.

Wenn sich nichts tut, dann liegt das vermutlich daran,
dass Du noch im »Entwurfs-Modus« bist.

Aktiviere das Tabellenblatt (nicht im VBA-Editor) wo
sich der Button befindet. Klicke auf die erste Schaltfläche
der Symbolleiste »Steuerelement-Toolbox« und beende
damit den Entwurfsmodus.

Gib nun etwas in Zelle A1 ein. Die Schaltfläche sollte
nun diesen Wert übernehmen.

Ich hoffe, dass Dir das weiterhilft.

Horst Kattanek

unread,
Apr 11, 2003, 9:59:14 AM4/11/03
to
Hallo Monika,

es geht alles wie fetsgelegt. Ich glaube jetzt noch eine letzte Frage zu
Schaltflächen. Für alle 12 Monate habe ich jeweils eine CommandButton.
Wenn "Keine Daten" soll der jeweilige Button nicht sichbar sein, das bringe
ich hin, aber es es ist eine ärgerliche Schreiberei, kann man etwas
zusammenfassen?

Schönes Wochende
Horst

"Monika Weber" <Monika...@MVPs.org> schrieb im Newsbeitrag

news:uuUomys$CHA....@TK2MSFTNGP10.phx.gbl...

Eberhard Funke

unread,
Apr 11, 2003, 11:52:51 AM4/11/03
to
On Thu, 10 Apr 2003 16:57:44 +0200, "Monika Weber"
<Monika...@MVPs.org> wrote:

>Hallo Eberhard,
>
[........]


>
>Ich gehe mal davon aus, dass Du eine Schaltfläche aus
>der »Steuerelement-Toolbox« genommen hast.
>
>Wenn sich nichts tut, dann liegt das vermutlich daran,
>dass Du noch im »Entwurfs-Modus« bist.
>
>Aktiviere das Tabellenblatt (nicht im VBA-Editor) wo
>sich der Button befindet. Klicke auf die erste Schaltfläche
>der Symbolleiste »Steuerelement-Toolbox« und beende
>damit den Entwurfsmodus.
>
>Gib nun etwas in Zelle A1 ein. Die Schaltfläche sollte
>nun diesen Wert übernehmen.
>

[........]

Danke Monika,

genau das war's!

Monika Weber

unread,
Apr 11, 2003, 11:28:24 PM4/11/03
to
Hallo Eberhard,

> genau das war's!

Freut mich, wenn ich helfen konnte.
Danke für's Feedback ;-)

> Als XL-Lehrling grüßt

Sind wir das nicht alle?
Excel ist sehr vielfältig und es gibt immer wieder
neues zu erlernen und entdecken.

Monika Weber

unread,
Apr 11, 2003, 11:42:58 PM4/11/03
to
Hallo Horst

> es geht alles wie fetsgelegt. Ich glaube jetzt noch eine letzte Frage zu
> Schaltflächen. Für alle 12 Monate habe ich jeweils eine CommandButton.
> Wenn "Keine Daten" soll der jeweilige Button nicht sichbar sein, das
bringe
> ich hin, aber es es ist eine ärgerliche Schreiberei, kann man etwas
> zusammenfassen?

Viel Schreibarbeit? - Findest Du?
Da kommen ja nur zwei Codezeilen hinzu:

Private Sub Worksheet_Calculate()
Dim rng As Range
Set rng = Worksheets("Auswertung").Range("A3")
If rng = 0 Or rng = "" Then
CommandButton1.Caption = "Keine Daten"

CommandButton1.Visible = False


Else
CommandButton1.Caption = CDate([A1])

CommandButton1.Visible = True


End If
Set rng = Nothing
End Sub

Wenn Du das 11x kopierst, hast Du für jeden Monat einen Butten und
musst nur jeweils die Nummer des Command-Buttons anpassen. Noch
schneller bist Du dann damit:

Private Sub Worksheet_Calculate()
Dim rng As Range
Set rng = Worksheets("Auswertung").Range("A3")
If rng = 0 Or rng = "" Then

With CommandButton1
.Caption = "Keine Daten"
.Visible = False
End With
Else
With CommandButton1
.Caption = CDate([A1])
.Visible = True
End With


End If
Set rng = Nothing
End Sub

Ich hoffe, dass Dir das weiterhilft.

--

Eberhard Funke

unread,
Apr 12, 2003, 1:33:56 PM4/12/03
to
On Sat, 12 Apr 2003 05:28:24 +0200, "Monika Weber"
<Monika...@MVPs.org> wrote:


>
>> Als XL-Lehrling grüßt
>
>Sind wir das nicht alle?

Ich überlege, vielleicht sollte ich dann meine Signatur bis auf
weiteres in Leerling oder Frischling ändern ;-))

Horst Kattanek

unread,
Apr 13, 2003, 3:01:47 AM4/13/03
to
Hallo und vielen Dank Monika,
hätte selber drauf kommen können, mit der "Kopiererei", der Wald und die
Bäume ...
Ein schönes Osterfest
wünscht Horst

"Monika Weber" <Monika...@MVPs.org> schrieb im Newsbeitrag

news:#AlFVWKA...@TK2MSFTNGP10.phx.gbl...

0 new messages