Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1836to1840
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

Kontextmenü weiße Felder

Kontextmenü weiße Felder
06.07.2021 08:00:42
SmileStyle
Guten Morgen,
ich habe mir ein Kontextmenü gebaut mit 25 Einträgen davon sind die letzten 4 leer. Wenn ich jetzt rechtsklicke tauchen die leeren Platzhalter auf bekomme ich diese irgendwie weg ?
Mein Code lautet wie folgt :

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
For InI = 1 To 25
Set oBtn = Application.CommandBars("Cell").Controls.Add
With oBtn
.Caption = Range("AbwK" & InI).Value
.OnAction = "'Färbe ""AbwK" & InI & """'"
End With
Next
End Sub

MfG SmileStyle

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kontextmenü weiße Felder
06.07.2021 08:44:14
Nepumuk
Hallo,
warum verbiegst du ein eingebautes Kontextmenü und erzeugst nicht ein Eigenes?
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
06.07.2021 09:03:00
Smilestyle
Das ist eine sehr gute Frage . Vielleicht zu wenig Vorwissen denke ich :D
MfG SmileStyle
AW: Kontextmenü weiße Felder
06.07.2021 09:24:21
Nepumuk
Hallo,
schau dir mal meine Beispielmappe an. Beachte auch das Modul "DieseArbeitsmappe" und das der Tabelle.
https://www.herber.de/bbs/user/146970.xlsm
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
06.07.2021 09:55:28
Smilestyle
Konnte alles so übernehmen und habe es denke soweit auch verstanden. Habe nur immer noch das Problem das 4 Felder dann noch leer angezeigt werden.
https://www.herber.de/bbs/user/146972.xlsm
hier die Datei . Wenn man rechtsklick kommen auch die Felder die ich sozusagen als Platzhalter noch nicht ausgefüllt habe.
MfG SmileStyle
Anzeige
AW: Kontextmenü weiße Felder
06.07.2021 10:08:26
Nepumuk
Hallo,
klar, du hast in den Grundeinstellungen nur 21 Einträge. AbwK21 - 25 sind leer.
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
06.07.2021 10:31:30
Smilestyle
Ja das ist so gewollt. sodass der Nutzer der Datei einfach in die Felder was eintragen kann damit die dann im Kontextmenü angezeigt werden können.
möchte nur das solange da nichts drin steht , diese auch nicht angezeigt werden
mfG Smile
AW: Kontextmenü weiße Felder
06.07.2021 10:43:59
Nepumuk
Hallo,
in das Modul der Tabelle "Grundeinstellungen":

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C43:C46")) Then Call CreateCommandBar
End Sub
Im Modul "kontextmenue":

Public Sub CreateCommandBar()
Dim objCommandBar As CommandBar
Dim objCommandBarButton As CommandBarButton
Dim lngIndex As Long
Call DeleteCommandBar
Set objCommandBar = CommandBars.Add(Name:=CONTEXT_MENU, _
Position:=msoBarPopup, Temporary:=True)
For lngIndex = 1 To 25
If Not IsEmpty(Range("AbwK" & CStr(lngIndex)).Value) Then
Set objCommandBarButton = objCommandBar.Controls.Add(Type:=msoControlButton)
With objCommandBarButton
.Caption = Range("AbwK" & CStr(lngIndex)).Value
.OnAction = "'Färbe ""AbwK" & CStr(lngIndex) & """'"
End With
End If
Next
Set objCommandBarButton = Nothing
Set objCommandBar = Nothing
End Sub
Im Modul "DieseArbeitsmappe":

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Saved Then
Select Case MsgBox("Sollen Ihre Änderungen in '" & Name & _
"' gespeichert werden", vbExclamation Or vbYesNoCancel)
Case vbYes
Save
Case vbNo
Saved = True
Case vbCancel
Cancel = True
End Select
End If
If Not Cancel Then
Call DeleteCommandBar
Call TimeStop
End If
End Sub
Gruß
Nepumuk
Anzeige
AW: Kontextmenü weiße Felder
06.07.2021 10:47:36
Nepumuk
Oooooooooops,
da ist ein Fehler drin. So:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C43:C46")) Is Nothing Then Call CreateCommandBar
End Sub
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
06.07.2021 11:05:58
Smilestyle
Danke funktioniert wunderbar =)
Gruß Smile
AW: Kontextmenü weiße Felder
06.07.2021 11:08:59
Smilestyle
Wenn ich noch eine frage zu einer anderen Sache habe soll ich die dann hier stellen oder ein neues Thema machen ?
AW: Kontextmenü weiße Felder
06.07.2021 11:10:38
Nepumuk
Hallo,
mach ein neues Thema auf.
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
07.07.2021 14:00:05
Smilestyle
Habe noch eine Frage zum Kontextmenü , habe das Problem wenn ich jetzt einen Eintrag bei den Abwesenheitskürzeln lösche also eine Zeile der Eintrag nicht verschwindet und wenn ich dann die Datei speichere und neu aufmache dann gibt er mir einen Laufzeitfehler. Das passiert weil er die AbwK4 z.b. nicht mehr findet. Kann man das lösen.
MfG Smile
Anzeige
AW: Kontextmenü weiße Felder
07.07.2021 14:25:01
Nepumuk
Hallo,
im Modul "kontextmenue":
Code:

[Cc][+][-]

Public Sub CreateCommandBar() Dim objCommandBar As CommandBar Dim objCommandBarButton As CommandBarButton Dim objName As Name Dim lngIndex As Long Call DeleteCommandBar Set objCommandBar = CommandBars.Add(Name:=CONTEXT_MENU, _ Position:=msoBarPopup, Temporary:=True) For lngIndex = 1 To 25 For Each objName In ThisWorkbook.Names If objName.Name = "AbwK" & CStr(lngIndex) Then Exit For Next If Not objName Is Nothing Then If Not IsError(Evaluate(objName.RefersTo)) Then If Not IsEmpty(Range(objName.Name).Value) Then Set objCommandBarButton = objCommandBar.Controls.Add(Type:=msoControlButton) With objCommandBarButton .Caption = Range(objName.Name).Value .OnAction = "'Färbe """ & objName.Name & """'" End With End If End If End If Next Set objCommandBarButton = Nothing Set objCommandBar = Nothing Set objName = Nothing End Sub

Und das Change-Event im Modul der Tabelle "Grundeinstellungen":
Code:

[Cc]

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C22:C46")) Is Nothing Then Call CreateCommandBar End Sub

Gruß
Nepumuk
Anzeige
AW: Kontextmenü weiße Felder
07.07.2021 16:42:00
Smilestyle
Der Code funktioniert danke schon mal.
Habe jetzt noch das Problem das ich meine Datei so geändert habe das AbwK das Ausgeschriebene der Abwesenheitskürzel ist und der das anzeigen soll im Kontextmenü. Das passt auch soweit aber er soll die Kürzel einfügen in der Tabelle. Die Bereiche habe ich umbenannt in AbwKk1 - 25.
Hier die Datei:
https://www.herber.de/bbs/user/147004.xlsm
MfG Smile
AW: Kontextmenü weiße Felder
07.07.2021 16:50:06
Nepumuk
Hallo,
ich habe keine Lust Code an dauernd geänderte Bedingungen anzupassen.
Gruß
Nepumuk
AW: Kontextmenü weiße Felder
08.07.2021 07:08:43
Smilestyle
Naja in Ordnung , denke das ist normal das man Bedingungen anpasst. Danke td für die gute Unterstützung.
MfG Smile
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige