Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Menü der rechten Maustaste

Menü der rechten Maustaste
27.04.2008 16:28:00
Dirk
Hallo Leute,
beim durchstöbern dieses Forums und der darin enthaltenen Exceldateien wurde mein Menü der rechten Maustaste verstellt(Keine Angst, geht wieder- Dank Euch). Das brachte mich auf folgende Frage
Kann ich das rechte Mausmenü in einem bestimmten Tabellenblatt(Ferientermine) so verändern, dass ich dort nur noch 4 verschiendene Farben (schwach-gelb, schwach-rot, schwach-blau und schwach-violett)anklicken kann, und sonst alles verschwunden ist.
Beim verlassen des Tabellenblattes soll das richtige rechte Mausmenü wieder vorhanden sein
Kann ich sowas mit vba bewerkstelligen, wenn ja wie?
Bitte helft mir
Vielen Dank für eure Antworten
Gruss Dirk

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Menü der rechten Maustaste
27.04.2008 16:53:45
Hajo_Zi
Hallo Dirk,
bei kaum VBA Kenntnisse hast Du Dir ganz schon was vorgenommen.
' ************************************************************* _ ' Modul: DieseArbeitsmappe Typ = Element der Mappe(Sheet, Workbook, ...) ' ************************************************************** Option Explicit '************************************************** '* H. Ziplies * '* 27.04.08 * '* erstellt von Hajo.Ziplies@web.de * '* http://Hajo-Excel.de/ * '************************************************** Private Sub _ Workbook_Open() KontextmenueErgaenzen End Sub Private Sub _ Workbook_BeforeClose(Cancel As Boolean) KontextmenueZuruecksetzen End Sub Private Sub _ Workbook_Activate() KontextmenueErgaenzen End Sub Private Sub _ Workbook_Deactivate() KontextmenueZuruecksetzen End Sub



' **************************************************************
' Modul: Modul_Kontextmenue Typ = Allgemeines Modul
' **************************************************************

Option Explicit ' Variablendefinition erforderlich
Option Private Module ' damit Makros nicht unter Makros angezeigt werden
'**************************************************
'* H. Ziplies *
'* 27.04.08 *
'* erstellt von Hajo.Ziplies@web.de *
'* http://Hajo-Excel.de/ *
'**************************************************
Sub KontextmenueErgaenzen()
Dim oBtn As CommandBarButton
Dim InI As Integer
For InI = Application.CommandBars("Cell").Controls.Count To 1 Step -1
Application.CommandBars("Cell").Controls(1).Delete
Next InI
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-gelb" ' Beschriftung
.OnAction = "schwach_gelb" ' Aktion
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-rot" ' Beschriftung
.OnAction = "schwach_rot" ' Aktion
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-blau" ' Beschriftung
.OnAction = "schwach_blau" ' Aktion
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-violett" ' Beschriftung
.OnAction = "schwach_violett" ' Aktion
End With
Set oBtn = Nothing
End Sub
Sub KontextmenueZuruecksetzen()
On Error Resume Next
Application.CommandBars("Cell").Reset
End Sub
Sub schwach_gelb()
MsgBox "schwach-gelb"
End Sub
Sub schwach_rot()
MsgBox "schwach-rot"
End Sub
Sub schwach_blau()
MsgBox "schwach-blau"
End Sub
Sub schwach_violett()
MsgBox "schwach-violett"
End Sub



Anzeige
AW: Menü der rechten Maustaste
27.04.2008 17:31:33
Dirk
Hallo Hajo,
ersteinmal vielen Dank
ob Dein Code so funktioniert kann ich noch icht sagen, muß halt erst probieren, werde jetzt in die Testphase gehen.
Falls ich noch Fragen habe, werde ich mich melden.
Vielen Dank, schönes Wochenend noch, bis demnächst
Gruss und danke
Dirk

verbessern?
27.04.2008 17:50:00
Dirk
Hallo Hajo,
hab da noch ein paar Fragen zu dem Code
kann man vor dem Schwach-gelb, schwach-rot usw. auch noch so kleine farbliche icons machen?
Und, ist es möglich, dass das ganze nur auf einem Tabellenblatt (Ferientermine) der ganzen Datei passiert?
Danke für die Unterstützung
Dirk

AW: verbessern?
27.04.2008 17:58:15
Herbert
Hi,
es gibt nur 10 Farbicons, die haben die ID von 6849 bis 6859.
Sonst geht nur eigene zu erstellen, die kannst du aber nur mit
Copy & paste einfügen.
mfg Herbert

AW: verbessern?
27.04.2008 18:17:00
Hajo_Zi
Hallo Dirk,
in dem Teil

With oBtn
.Caption = "Blinken"        ' Beschriftung
.OnAction = "Blinken"       ' Aktion
.FaceId = 6849               ' Symbol
End With


Gruß Hajo

Anzeige
AW: verbessern?
27.04.2008 18:34:00
Dirk
Hallo Hajo,
habe
.FaceId = 6849 ' Symbol
eingefügt, und da springt dann der debugger gleich beim Start hin, mache ich da was falsch?
Danke für die Unterstützung
Dirk

AW: verbessern?
27.04.2008 18:42:18
Hajo_Zi
Hallo Dirk,
dann hast Du es wohl nicht korrekt geändert, folgender Code läft ohne Probleme.

Sub KontextmenueErgaenzen()
Dim oBtn As CommandBarButton
Dim InI As Integer
For InI = Application.CommandBars("Cell").Controls.Count To 1 Step -1
Application.CommandBars("Cell").Controls(1).Delete
Next InI
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-gelb"       ' Beschriftung
.OnAction = "schwach_gelb"      ' Aktion
.FaceId = 6849
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-rot"        ' Beschriftung
.OnAction = "schwach_rot"       ' Aktion
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-blau"       ' Beschriftung
.OnAction = "schwach_blau"      ' Aktion
End With
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = "schwach-violett"    ' Beschriftung
.OnAction = "schwach_violett"   ' Aktion
End With
Set oBtn = Nothing
End Sub


Gruß Hajo

Anzeige
AW: verbessern?
27.04.2008 18:54:00
Dirk
Hallo
habe es so kopiert und eingefügt, bleibt aber beim FaceID hängen
Danke für deine Geduld
Dirk

AW: verbessern?
27.04.2008 18:39:27
Hajo_Zi
Hallo Dirk,
für eine Tabelle unter Open.

Private Sub Workbook_Activate()
KontextmenueErgaenzen
End Sub
Private Sub Workbook_Deactivate()
KontextmenueZuruecksetzen
End Sub


löschen und bei open
If ActiveSheet.Name = "Tabelle1" Then KontextmenueErgaenzen
ändern
und unter der Tabelle


Private Sub Worksheet_Activate()
KontextmenueErgaenzen
End Sub
Private Sub Worksheet_Deactivate()
KontextmenueZuruecksetzen
End Sub


dass habe ich jetzt aber nicht mehr getestet
Gruß Hajo

Anzeige
AW: verbessern?
27.04.2008 18:51:00
Dirk
Danke Hajo,
das funktioiert, bis auf das mit der FaceID
Da kommt ein Laufzeitfehler -2147467259 (8004005): Die Methode FaceId für das Objekt _CommandBarButton ist fehlgeschlagen.
was mach ich denn da wohl falsch, danke für die Hilfe
Dirk

AW: verbessern?
27.04.2008 19:06:57
Herbert
Hi,
wenn deine Excelversion(ich sehe hier E 2000) stimmt, geht das auch nicht, weil es
diese Icons da noch nicht gab.
Bleibt nur der umständlich Weg, die Icons selbst zu erstellen und in die Controls zu kopieren.
mfg Herbert

AW: verbessern?
27.04.2008 19:14:00
Dirk
Hallo Herbert,
danke für die Rückmeldung, ja ist richtig Version 9 bzw Excel 2000
Wie und was muss ich denn beachten bzw. machen, bei dem umständlichen Weg
kannst du mir das bitte erklären?
Gruss und danke
Dirk

Anzeige
AW: verbessern?
27.04.2008 20:55:00
Herbert
Hi,
kopier den Code mal in ein Modul und teste ihn, wenn das unter Excel 2000 geht, ich
kann es nicht probieren, weil kein E2000, muss der 2. Button das selbe Icon haben
wie der erste.

Option Explicit
Const CBNAME As String = "Icontest"
Sub Excel2000Test()
Dim cb As CommandBar, cbb As CommandBarButton
Call DeleteBar
Set cb = CommandBars.Add(CBNAME)
Set cbb = cb.Controls.Add(1)
With cbb
.Style = 3
.Caption = "Quellicon"
.FaceId = 33
End With
Set cbb = cb.Controls.Add(1)
With cbb
.Style = 3
.Caption = "Zielicon"
.Picture = cb.Controls(1).Picture
End With
cb.Position = 4
cb.Visible = True
End Sub



Private Sub DeleteBar()
On Error Resume Next
CommandBars(CBNAME).Delete
End Sub


mfg Herbert

Anzeige
AW: verbessern?
27.04.2008 21:11:00
Dirk
Hallo Herbert,
Dein Code läuft leider nicht durch, hat einen Fehler beim Kompelieren: Methode oder Datenobjekt nicht gefunden meint vba bei .picture = cb.Controls(1).Picture
.picture ist dabei blau hinterlegt
Hatte mir gedacht dass es eigentlich nur ein kleines Quadrat in der entsprechenden Farbe sein sollte, evt mit kleinem schwarzen Rahmen, aber wenn das sooo aufwendig ist.....
Danke nocheinmal das du mir hilfst
Mfg Dirk

AW: verbessern?
27.04.2008 22:02:00
Herbert
Hi,
kontextmenüs können nicht interaktiv bearbeitet werden, nur mit VBA, sonst wäre es einfach.
Habe heute keinen Bock mehr. Wenn die frage morgen noch offen ist, sehen wir weiter.
mfg Herbert

Anzeige
AW: verbessern?
27.04.2008 22:05:00
Dirk
Hallo Herbert,
schönen Sonntag noch, und nocheinmal danke bis hierher
Gruss Dirk

AW: verbessern?
28.04.2008 16:27:25
Herbert
Hi,
der Code stammt von K.Rola hier aus dem Archiv, habe es nur etwas schlanker gemacht, das
war umfangreicher. So sollte dir klar werden, wie das prinzipiell funktioniert.
https://www.herber.de/bbs/user/51932.xls
mfg Herbert

wie bring ich das meinem vba bei?
28.04.2008 17:23:32
Dirk
Hallo Herbert,
wow, sind genau die Farben bei wie ich sie brauche, oder besser möchte.
Nur, wie sag ich das meinem Vba?
Wenn ich das richtig verstanden habe sind die Zeilen Nr = die Farbnummern
also in meinem Fall schwach-gelb Farbnummer 36, schwach-rot=Farbnumer 40, schwach-blau =Farbnummer 34 und schwach-violett= Farbnummer 39.
Könntest du mir noch nen Tip geben ich ich das hinbekomme?
Danke für die Unterstützung
Gruss Dirk

Anzeige
AW: wie bring ich das meinem vba bei?
28.04.2008 17:43:00
Herbert
Hi,
die Icons müssen ja nur einma erstellt werden, am einfachsten in deiner Mappe und dann
ausblenden. Die Icons haben eine eindeutige Nummer.
Icons.Shapes(36).Copy
Set cbb = cb.Controls.Add(1)
With cbb
.Style = 3
.Caption = "Hellgelb"
.BeginGroup = True
.PasteFace
.OnAction = "WasWeißIchdenn"
End With
Ein wenig probieren musst du schon und vor allem, versuch den Code zu verstehen.
Es wird übrigens nicht der Blattname, sondern der Codename des Blatts verwendet,
das mach unabhängig von ev. Umbenennung.
mfg Herbert

AW: wie bring ich das meinem vba bei?
28.04.2008 18:45:22
Dirk
Hallo Herbert,
möchte gern verstehen was ich da tue, ich glaub, bei vba-Anfänger, ist das ein wenig zu hoch für mich.
Kann es nicht umsetzen wie ich einzelne Icons daraus erstellen kann und diese dann bei mir in die rechte Maustaste kriege
Deinen letzten Beitrag mit dem Codeschnipsel hat letztendlich dazugeführt, dass ich den Wald vor lauter Bäumen nicht mehr sehe.
Totzdem vielen Dank für deine Unterstützung und Hilfe, vielleicht kann ich es später mal umsetzten
Mfg Dirk

AW: wie bring ich das meinem vba bei?
28.04.2008 21:15:00
Herbert
Hi,
gib mal die genauen Colorindex an, ich weiß z.B. nicht, was schwach rot sein soll.
Ich erstelle dir dann ein Beispiel, dass du 1:1 übernehmen kannst.
mfg Herbert

AW: wie bring ich das meinem vba bei?
28.04.2008 22:02:50
Dirk
Hallo Herbert,
nocheinmal vielen Dank das Du Dir soviel Mühe machst, probier so einiges, kommt allerdings nicht viel bei rum.
schwach-gelb = Colorindex 36
schwach-rot = Colorindex 40
schwach-blau = Colorindex 34
schwach-violett = Colorindex 39
Hoffe das ich das später mal irgendwie gutmachen kann
Danke
Mfg Dirk

danke schön, aber eine Sache noch
29.04.2008 16:35:00
Dirk
Hallo Herbert,
wow, Du siehst mich beeindruckt, sogar mit Trennstrichen dazwischen prima, danke.
Was mir jetzt nur noch nicht klar ist, ist wie man(ich) aus der anderen Datei diese Icons rausbekommt in eine neue Datei.
Nicht falsch verstehen, ist alles so wie ich es möchte, möchte aber auch lernen, und das indem ich das am besten mit anderen Farben nachbaue und damit es besser versteht.
Wäre super, wenn Du mir da noch auf die Sprünge helfen kannst
Ansonsten vielen vielen Dank für die bomben Lösung
Gruss und besten Dank vom Teutoburger Wald
Dirk

AW: danke schön, aber eine Sache noch
29.04.2008 16:49:00
Herbert
Hi,
wie du Icons erzeugen kannst, zeigt dir die erste Datei.
Kopier doch einfach die Icons mit den gewünschten farbe in die neue Mappe.
mfg Herbert

AW: danke schön, aber eine Sache noch
29.04.2008 17:46:02
Dirk
Hallo Herbert,
die Idee hatte ich auch schon, mit dem Ergebniss das wenn ich das Icon einfüge es immer lila ist,
auch wenn ich es z.B. grün kopiere.
Darum meine Frage
Danke
Gruß Dirk

AW: danke schön, aber eine Sache noch
29.04.2008 18:04:22
Dirk
Hallo,
kann scheinbar nicht mal mehr kopieren und einfügen
Bei einer komplett neuen Mappe klappt das kopieren eines grünen Icons und kommt dann auch grün an,
nicht so in dem Tabellenblatt Icons, dort kommt es lila an.
Danke an alle die mich bei diesem Projekt unterstützt haben
Mfg Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige