Excel Buttons: Hilfetext?

Hallöchen,

habe folgendes kleines Problem:
ein Excel-Worksheet, da sind die Makrofunktionen als klickbare Icons hinterlegt.
Jetzt wird gewünschst, dass wenn man mit dem Mauszeiger über dem Bildchen ist, kurz in Worten gezeigt wird, was das Bild macht.

Beispiel aus Excel: „Diskette“-Symbol. Wenn ich mit dem Mauszeiger drübergehe, steht da „Speichern“.

Jetzt habe ich im Worksheet „Mein Symbol1“, dann soll da stehen Funktion 1

Wie geht das?

Dankeschön,
Michael

habe folgendes kleines Problem:
ein Excel-Worksheet, da sind die Makrofunktionen als klickbare
Icons hinterlegt.
Jetzt wird gewünschst, dass wenn man mit dem Mauszeiger über
dem Bildchen ist, kurz in Worten gezeigt wird, was das Bild
macht.

Hi Michael,

wie hast du Symbole erzeugt, manuell, Makro? Bei Makro, zeige mal den Code.

Welche Excel-Version hast du?

bei meinem XL2000 kommt der gelbe Erläuterungstext automatisch.

Gruß
Reinhard

Hallöchen,

wie hast du Symbole erzeugt, manuell, Makro? Bei Makro, zeige mal den Code.

Sind manuell erzeugt, jedes einzeln fein säuberlich von Hand positioniert.

bei meinem XL2000 kommt der gelbe Erläuterungstext automatisch.

Bei mir passiert gar nichts bis ich klicke, Excel 2003.

Gruss,
Michael

Tooltip
Wenigstens weiß ich dank Google mittlerweile, dass der Name für das, was ich brauche „Tooltip“ ist.

Wie ich das Zeug nutze, weiß ich allerdings immer noch nicht :frowning:

Das hier:

 ActiveSheet.Shapes("A").Comment = "button1"
 ActiveSheet.Shapes("B").Name = "button2"

Bringt mir leider nichts, da es nur den Namen des Buttons ändert aber keinen Text anzeigt - aber irgendwie hiermit muss es sein O.o

Hallo Michael,

wie hast du Symbole erzeugt, manuell, Makro? Bei Makro, zeige mal den Code.

Sind manuell erzeugt, jedes einzeln fein säuberlich von Hand
positioniert.

warum machste denn auch sowas :smile:

Mache das doch einmalig und zeichne dabei ein Makro auf, dann mußt du nur den Code abändern und kannst dann auf Änderungen der Position oder sonstigen Dingen schnell reagieren.

bei meinem XL2000 kommt der gelbe Erläuterungstext automatisch.

Bei mir passiert gar nichts bis ich klicke, Excel 2003.

*hmmh* dein Code da oben weist daraufhin, daß du Bilder auf dem Blatt positioniert hast und enen Makros zugewiesen hast!?

Ich ging davon aus, du hast oben in eine Symbolleiste eigene Symbole hinzugefügt die Makros aufrufen und dort ist es so wie ich schrieb, der Tooltip , also das gelbe Fensterchen kommt automatisch.

Probiere mal den nachfolgenden Code, der stammt zwar aus einem anderen Forum und der Ersteller hatte ein anderes problem damit, aber das ist ja wurscht, da ich den Code genauso geschrieben hätte.
Wie du siehst ist da nix mit Tooltip dabei, aber der gelbe Hinweistext kommt automatisch.
Einen Tooltip habe ich dir eingebaut.
Zum loeschen der neuen Symbolleiste brauchste nur das „Delete“ ausführen.

Gruß
Reinhard

Option Explicit
'
Private Sub Workbook\_Open()
Dim oBar As CommandBar
 Dim oBtn As CommandBarButton
 On Error Resume Next
 Application.CommandBars("VSGM Betriebsparameter").Delete
 On Error GoTo 0
 Set oBar = Application.CommandBars.Add("VSGM Betriebsparameter", msoBarTop, False, True)
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "INPUT"
 .Style = msoButtonIconAndCaption
 .FaceId = 346
 .OnAction = "START"
 .TooltipText = "Gell da guggste"
 End With
 oBar.Visible = True

 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "HYPERBEL"
 '.Style = msoButtonCaption
 .Style = msoButtonIconAndCaption
 .FaceId = 346
 .OnAction = "HYPERBEL"

 End With

 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "KerneisenGuß"
 '.Style = msoButtonCaption
 .Style = msoButtonIconAndCaption
 .FaceId = 346
 .OnAction = "KerneisenGuss"
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "Drucken"
 '.Style = msoButtonCaption
 .Style = msoButtonIconAndCaption
 .FaceId = 4
 .OnAction = "Drucken"
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "Speichern"
 .Style = msoButtonIconAndCaption
 .FaceId = 3
 .OnAction = "Speichern"
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "E-MAIL"
 .Style = msoButtonIconAndCaption
 .FaceId = 2039
 .OnAction = "E\_Mail"
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "Hilfe"
 .Style = msoButtonIconAndCaption
 .FaceId = 2
 .OnAction = "Hilfe"
 '.BeginGroup = True
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "CLOCK"
 .Style = msoButtonIconAndCaption
 .FaceId = 126
 .OnAction = "CLOCK"
 End With
 Set oBtn = oBar.Controls.Add
 With oBtn
 .Caption = "Beenden"
 .Style = msoButtonCaption
 .FaceId = 29
 .OnAction = "adrClose"
 End With
 oBar.Visible = True
End Sub

Danke schonmal

warum machste denn auch sowas :smile:

Warum wohl - weil ich eigentlich kein Excel-Programmierer bin und dachte, es ist einfacher so O.o
Aber man lernt jeden Tag was dazu.

Mache das doch einmalig und zeichne dabei ein Makro auf, dann mußt du nur den Code abändern und kannst dann auf Änderungen der Position oder sonstigen Dingen schnell reagieren.

Irgendwie habe ich bei den Macros das Problem, dass die zugewiesenen Grafiken (selbstgepinselte Icons) dann verschütte sind.

*hmmh* dein Code da oben weist daraufhin, daß du Bilder auf dem Blatt positioniert hast und Makros zugewiesen hast!?

Ja, genau so. Schönen langen, richtig umständlichen Code, der durch Drücken eines Knöpfchens plonk macht.

So richtig nach dem Prinzip:
Sub meinKnoepfli_Click()
meinKomplizierterCode
End Sub

Ich ging davon aus, du hast oben in eine Symbolleiste eigene Symbole hinzugefügt die Makros aufrufen und dort ist es so wie ich schrieb, der Tooltip , also das gelbe Fensterchen kommt automatisch.

Hab’s mittlerweile auch gelernt, dass ich mich dadurch selbst geleimt habe. Muss also meine Arbeitsweise überdenken.

Probiere mal den nachfolgenden Code, …Einen Tooltip habe ich dir eingebaut.

Dankeschön, sowas brauchte ich.

Gruss,
Michael

Nicht ganz fertig :frowning:

Mache das doch einmalig und zeichne dabei ein Makro auf, dann mußt du nur den Code abändern und kannst dann auf Änderungen der Position oder sonstigen Dingen schnell reagieren.

Ich habe jetzt noch das Problem mit meinen Icons:
Die Icons sind von Hand generiert (=Bitmap Images) und m.E.n. „sprechend“ für die zugrundeliegende Aktivität gewählt. Da es Spezialaktionen sind, gibt es (natürlich) in den Standard-Icons von MS Office nichts passendes.

Leider übernimmt der VBA Macro Recorder beim Anlegen von Buttons selbsterstellte Images überhaupt nicht in den Code (d.h. beim Abspielen des Macros entsteht ein Button ohne das Image).

Was nun?

Danke,
Michael

Ich habe jetzt noch das Problem mit meinen Icons:
Die Icons sind von Hand generiert (=Bitmap Images) und m.E.n.
„sprechend“ für die zugrundeliegende Aktivität gewählt. Da es
Spezialaktionen sind, gibt es (natürlich) in den
Standard-Icons von MS Office nichts passendes.
Leider übernimmt der VBA Macro Recorder beim Anlegen von
Buttons selbsterstellte Images überhaupt nicht in den Code
(d.h. beim Abspielen des Macros entsteht ein Button ohne das
Image).

Hallo Michael,

zeige mal den Code, damit ich sehe was du machst, also Buttons/Icons in einer Symbolleiste oder nicht.

Hast du dir alle Icons angesehen? Es gibt da mehrere Hundert davon.

Grundsätzlich ist es so, das Bild muß in der Zwischenablage sein, also so z.B. kriegste es rein:

activesheet.pictures(1).copy

und dann in dem Code den ich zeigte, anstatt

.FaceId=512

.PasteFace

benutzen.

Gruß
Reinhard

1 Like

Fertig, danke

Hast du dir alle Icons angesehen? Es gibt da mehrere Hundert davon.

Es geht um verschiedene Ketten-Operationen auf einer (logischen, aber nicht dargestellten) Baumstruktur, da habe ich nichts gefunden was von der Art her dazu passen könnte.
Wie auch immer, ich habe meine Bitmaps und bin zufrieden damit.

activesheet.pictures(1).copy
.PasteFace

War zwar noch mit strukturellen Änderungen verbunden, hat aber genau zu dem geführt, was ich wollte.

So habe ich es jetzt gebastelt:

 For cIndex = 2 To ActiveWorkbook.Sheets("HILFE").UsedRange.Rows.Count
 If ActiveWorkbook.Sheets("HILFE").Range("D" & cIndex).Value "" Then
 Set oBtn = oBar.Controls.Add
 ActiveWorkbook.Sheets("HILFE").Shapes("Bild " & ActiveWorkbook.Sheets("HILFE").Range("A" & cIndex).Value).Copy
 With oBtn
 .Style = msoButtonIconAndCaption
 .PasteFace
 .OnAction = ActiveWorkbook.Sheets("HILFE").Range("D" & cIndex).Value
 .TooltipText = ActiveWorkbook.Sheets("HILFE").Range("B" & cIndex).Value
 End With
 oBar.Visible = True
 End If
 Next cIndex

Habe gleichzeitig mein „Help“ Worksheet zweckentfremdet, indem dort die zugrundeliegenden Makros mit eingetragen wurden - so dass ich durch eine Änderung am Worksheet gleich die Belegung meiner Buttons ändern kann.

Einziges Manko: gibt es noch eine Möglichkeit, je nach Worksheet bestimmte Buttons zu deaktivieren?
Also bei Worksheet „ABC“ sollte Button „ABC Initialisierung“ aktiv sein, aber „Daten aus ABC importieren“ deaktiviert. Und bei „BCD“ genau umgekehrt.

Momentan habe ich im Funktionscode eine MsgBox, die mit Warnung die weitere Verarbeitung abbricht ( if … MsgBox … end sub )
Gibt’s da auch noch was Feines für?

Danke,
Michael

Einziges Manko: gibt es noch eine Möglichkeit, je nach
Worksheet bestimmte Buttons zu deaktivieren?
Also bei Worksheet „ABC“ sollte Button „ABC Initialisierung“
aktiv sein, aber „Daten aus ABC importieren“ deaktiviert. Und
bei „BCD“ genau umgekehrt.

Hallo Michael,
beim Erzeugen der Controls kannst du ja gleich die Beschriftung mitgeben mit

.Caption=„Huhu“

dann in z.B. „tabelle1“_Modul:

Private Sub Worksheet_Activate()
comandbars("…").controls(„Huhu“).Enabled=true
comandbars("…").controls(„Huhu2“).Enabled=false
End Sub

WEnn das gleich bei Workbooks_Open geschehen soll, mußt du das so machen:

Private Sub Workbook_Open()
Worksheets(„Tabelle2“).Activate
Worksheets(„Tabelle1“).Activate
End Sub

denn

Private Sub Workbook_Open()
Worksheets(„Tabelle1“).Activate
End Sub

löst beim Start nicht das Activate-Ereignis in Blatt 1 aus !

ggfs. noch das Worksheet_Deactivate Ereignis miteinbeziehen, weiß grad nicht ob das nötig ist.

Bei vielen Blättern ist es einfacher, nix in die einzelenen Blätter zu schreiben sondern alles in

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
select case sh.name
case „Tabelle1“

case „tabelle2“

case else

end select
End Sub

abzuarbeiten

Gruß
Reinhard

1 Like

Danke danke

beim Erzeugen der Controls kannst du ja gleich die
Beschriftung mitgeben mit

.Caption=„Huhu“

Deine Tips sind wirklich Gold wert … /hug!