Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Shape beim klicken verändern

Shape beim klicken verändern
19.12.2019 12:39:10
MarC
Servus zusammen,
ich bin gerade voll am verzweifeln. Ich möchte mehrere Shapes (eine Navigationsleiste) erstellen deren Hintergrund grau, Schrift Standard und schwarz ist. Wenn ich eines der Shapes anklicke soll mir das gewünschte Tabellenblatt angezeigt werden. Die Hintergrundfarbe vom Shape sollte dann weiß werden, die Schrift Fett und der Rand soll einen Schatten erhalten. Praktisch so wie in meinem Beispiel.
Userbild
Ich habe so mir so was schon mal gebastelt aber das ist Jahre her und ich komme einfach nicht mehr drauf. Ich habe auch einen Code dazu im Netz gefunden aber mit dem komme ich leider auch nicht weiter. Kann mir hierbei bitte jemand helfen?
Beispiel Code:
'------------------- SHOW HIDE BUTTONS -----------------
Sub btnSearchMetadata_Click()
strButtonCaption = ActiveSheet.Shapes("btnSearchMetadata").TextFrame.Characters.Text
If strButtonCaption = "-" Then
ActiveSheet.Shapes("btnSearchMetadata").TextFrame.Characters.Text = "+"
Range("ShowHide_SearchMetadata").EntireColumn.Hidden = True
Else
ActiveSheet.Shapes("btnSearchMetadata").TextFrame.Characters.Text = "-"
Range("ShowHide_SearchMetadata").EntireColumn.Hidden = False
End If
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
die einfachste Lösung...
19.12.2019 12:58:43
Rudi
Hallo,
… dürften 2 übereinander liegende Shapes sein, die du wechselseitig ein- und ausblendest.
Gruß
Rudi
AW: die einfachste Lösung...
19.12.2019 13:11:54
MarC
Das dachte ich zuerst auch aber in dem Beispiel wurde das anscheinend per Marko gelöst. Die Datei darf ich leider nicht hochladen aber den Code aus dem ich nicht schlau werde. Wenn jemand eine andere Lösung bzw. einen eigenen Code wäre das natürlich super.
der Recorder ist dein Freund. owT
19.12.2019 13:59:30
Rudi
AW: der Recorder ist dein Freund. owT
19.12.2019 16:46:11
MarC
Danke Rudi, aber die Aufzeichnungen kann man meistens nur bedingt verwenden. Ich habe im Netz die erforderlichen Befehle gefunden ABER der Schatten ist immer an der falschen Stelle obwohl ich die Achsen richtig angegeben habe. Ich möchte den Schatten nur an der oberen Kante haben. Bei mir ist er aber immer rechts und unten egal was ich eingebe.
Kannst du mir oder jemand anders bitte weiterhelfen?
https://www.herber.de/bbs/user/133873.xlsm
Anzeige
AW: der Recorder ist dein Freund. owT
19.12.2019 17:24:46
peterk
Hallo
Es ist etwas sonderbar, aber es kommt darauf an, an welcher Stelle Du Visible aufrufst. Nachfolgender Code funktioniert
    With myDocument.Shapes(Application.Caller).Shadow
        .Type = msoShadow28
        .Visible = msoTrue
        .Style = msoShadowStyleOuterShadow
        .Blur = 5
        .OffsetX = 0
        .OffsetY = 10
        .RotateWithShape = msoFalse
        .ForeColor.RGB = RGB(0, 0, 120)
        .Transparency = 0
        .Size = 100
    End With

Anzeige
Vielen Dank. Erweitern mit Link?
20.12.2019 09:57:02
MarC
Danke für eure Hilfe. Leider wird immer noch am unteren Rand des Rechtecks ein kleiner Schatten angezeigt. Ich habe es jetzt so gelöst in dem ich ein anderes Recht über den Schatten gelegt habe =D. Aber ansonsten funktioniert es toll danke.
Ich würde es jetzt gerne noch erweitern. Ich habe 4 Rechtecke (Buttons) Klicke ich den ersten an also für i=1 würde ich gerne das Tabellenblatt 1 aufrufen für 2 das zweite. Man kann es mit Hyperlinks machen. Aber kann ich das auch irgendwie in den Code miteinbauen? Also für i = 1 rufe das auf für i = 2 das etc.....
Mein Code sieht aktuell so aus:
Sub Navigation_List()
Dim myDocument As Worksheet
Dim i
Set myDocument = Worksheets(1)
For i = 1 To 4
myDocument.Shapes(i).Fill.ForeColor.RGB = RGB(240, 240, 240)
myDocument.Shapes(i).TextFrame.Characters.Font.Bold = False
myDocument.Shapes(i).Shadow.ForeColor.RGB = RGB(0, 144, 191)
myDocument.Shapes(i).Shadow.Visible = False
With myDocument.Shapes(i).TextFrame2.TextRange.Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(168, 128, 0)
.Transparency = 0
.Solid
End With
Next
myDocument.Shapes(Application.Caller).Fill.ForeColor.RGB = RGB(255, 255, 255)
With myDocument.Shapes(Application.Caller).Shadow
.Type = msoShadow28
.Visible = msoTrue
.Style = msoShadowStyleOuterShadow
.OffsetX = 0
.OffsetY = -2.5
.RotateWithShape = msoFalse
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0.5
.Size = 100
End With
With myDocument.Shapes(Application.Caller).TextFrame2.TextRange.Font.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
End Sub

Anzeige
AW: Vielen Dank. Erweitern mit Link?
22.12.2019 00:09:45
Werner
Hallo,
da ich nicht weiß ob du das Tabellenblatt über den Namen oder den Index ansprechen willst mal beide Versionen.
With myDocument.Shapes(Application.Caller)
Worksheets("Tabelle" & CStr(Right(.Name, 1))).Activate
End With
With myDocument.Shapes(Application.Caller)
Worksheets(CLng(Right(.Name, 1))).Activate
End With
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige