Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel VBA / Einzelnes Control in einer Gruppe ansprechen...





Frage

Ich habe auf meinem Excel Sheet diverse Labels die ich alle gemeinsam ein-, odert ausblenden will. Hierzu habe ich die Labels gruppiert. Wie kann ich jetzt z.B. bei einem einzelnen Label "CAPITION" verándern ohne die Gruppe aufzuloesen? Bin leider neu in Excel und VBA. Bin sicher die Loesung ist einfach. Sagen wir meine Gruppe heisst: GRUPPE_1 und das Label das ich veraendern will heisst: Label_1 Wie lautet die entsprechende Zeile VBA Code? ActiveSheet........? Gruss Sam

Antwort 1 von coros

Hallo Sam,

ein Label in einer Gruppe spricht man genauso an, als wenn es sich nicht in einer Gruppe befiden würde, nämlich über seinen Namen. Wenn Du also bei Label1 den Namen, also die Eigenschaft Caption ändern möchtest, musst Du

Label1.Caption = "Den neuen Namen"


schreiben und es wird die Caption- Eigenschaft des Label 1 geändert.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Samantha

Hallo Oli

Danke fuer die Antwort. Ich hab da wohl einen Fehler gemacht. Ich meinte eine Gruppe von SHAPES.
Wenn ich in Excel z.B. 10 Rechtecke gruppiere und dieser Gruppe den Namen: Rechtecke gebe, kann ich mit der folgenden Zeile ein einzelnes Rechteck nicht mehr ansprechen.

ActiveSheet.Shapes("Rechteck1").Fill.ForeColor.SchemeColor = 3

Ich bekomme einen "Run time error" mit der Meldung: "The item with the specified name wasn´t found"

Bei gruppierten Controls geht das aber sehr wohl. Ich habe leider noch nicht viel Ahnung von VBA / Excel. Muss ich eine "Parent group" oder etwas aehnliches angeben?

Gruss Sam

Antwort 3 von coros

Hi Sam,

das diese Fehlermeldung erscheint, wird nicht an der Gruppierung der Rechtecke liegen, sondern vielmehr daran, dass es den Namen "Rechteck1" nicht gibt. Wenn Du standardmäßig Rechtecke erstellst, wird zwischen der Bezeichnung "Rechteck" und der Nummer ein Leerzeichen eingefügt. Da wird der Fehler liegen. Der Befehl muss nicht

ActiveSheet.Shapes("Rechteck1").Fill.ForeColor.SchemeColor = 3


sondern

ActiveSheet.Shapes("Rechteck 1").Fill.ForeColor.SchemeColor = 3


lauten. Ansonsten kann man Shapes genauso in der Gruppe ansprechen, also über den direkten Namen, wie bei Labels usw.

Bei Fragen melde Dich bitte wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Samantha

Hallo Oli

Also soviel ich weiss kann ich den Shapes jeden beliebigen Namen geben. "Rechteck1" waere somit ok wenn es den Namen nur einmal gibt.

Versuch doch mal folgendes:

1. Zeichne 2 Rechtecke auf dem Excel Worksheet

2. Bezeichne das 1. als "Rechteck1" und das 2. als "Rechteck2" (Die Rechtecke bitte jetzt noch nicht gruppieren!)

3. Erzeuge einen "ToggleButton"

4. Verlasse den Designmode und ruf VBA durch den Doubleclick auf den Toggle Button auf.

5. Fuege zwischen Private Sub ToggleButton_1 Click() und End Sub

die folgenden Codezeilen ein:

If ActiveSheet.Shapes("Rechteck1").Fill.ForeColor.SchemeColor = 3 Then
ActiveSheet.Shapes("Rechteck1").Fill.ForeColor.SchemeColor = 10
Else
ActiveSheet.Shapes("Rechteck1").Fill.ForeColor.SchemeColor = 3
End If

Wenn du nun zum Worksheet zurueckgehst und den Designmode verlaesst und den Toggle Button druecks, schaltet Rechteck1 abwechselnd von gruen auf rot.

Jetzt bitte die beiden Rechtecke mit der Maus selektieren und ueber die rechte Maustaste (Group) gruppieren. Der Gruppe den den Namen: "Rechtecke" geben.

Wenn du den Toggle Button jetzt druecks kommt die erwaehnte Fehlermeldung und ich weiss nicht warum! :-((

Antwort 5 von coros

Hallo Sam,

dann sieht der Code folgendermaßen aus:

Private Sub ToggleButton1_Click()
If ActiveSheet.Shapes("Rechtecke").GroupItems("Rechteck1").Fill.ForeColor.SchemeColor = 3 Then
ActiveSheet.Shapes("Rechtecke").GroupItems("Rechteck1").Fill.ForeColor.SchemeColor = 10
Else
ActiveSheet.Shapes("Rechtecke").GroupItems("Rechteck1").Fill.ForeColor.SchemeColor = 3
End If
End Sub


Ich hatte das vorher nicht über eine If- Abfrage und einen "ToggleButton" getestet (war ja auch nirgendwo von Dir erwähnt), sondern nur als einfaches Makro und da hatte es funktioniert.

Ich hoffe, das hilft Dir weiter. Bei Fragen melde Dich bitte wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Samantha

Hallo Oli

Danke! Klappt schonmal etwas besser. Immerhin kommt eine andere Fehlermeldung. ;-)

Wenn ich deinen Code kopiere und einfuege erhalte ich: "The specified value is out of range"

Muss ich die Namen der shapes irgenwie dimensionieren?

Sam

Antwort 7 von coros

Hi Sam,

besteht die Möglichkeit mir Deine Datei mal per Mail zuzusenden? Du kannst auch alle Daten, die mich nichts angehen löschen, bis auf die Gruppierungen, die müssen logischerweise bleiben. Meine E-Mailadresse findes Du auf meiner HP unter anderem im Impressum. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.