Advertisement
Jeckerkoelner

KontextmenueQuell

Sep 7th, 2023
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VBScript 2.27 KB | Source Code | 0 0
  1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  2.     Dim ws As Worksheet
  3.     Dim cell As Range
  4.     Dim cMenu As CommandBar
  5.     Dim cControl As CommandBarControl
  6.     Dim i As Integer
  7.  
  8.     ' Überprüfen, ob das Arbeitsblatt nicht "Grundinfos" ist
  9.    If Not ThisWorkbook.ActiveSheet.Name = "Grundinfos" Then
  10.         Set ws = ThisWorkbook.Sheets("Grundinfos")
  11.  
  12.         ' Überprüfen, ob der geklickte Bereich in den gewünschten Zellen liegt
  13.        If Not Intersect(Target, ws.Range("EC72,EC79,EC86,EC93,EC100,EC107,EC114,EC121,EC128,EC135,EC142,EC149,EC156,EC163,EC170,EC177,EC184,EC191,EC198,EC222,EC229,EC236,EC243,EC250,EC257,EC264,EC271,EC278,EC285,EC292,EC299,EC306,EC313,EC320,EC327,EC334,EC341,EC348")) Is Nothing Then
  14.             ' Erstellen Sie das benutzerdefinierte Kontextmenü
  15.            On Error Resume Next
  16.             Application.CommandBars("MyContextMenu").Delete
  17.             On Error GoTo 0
  18.             Set cMenu = Application.CommandBars.Add(Name:="MyContextMenu", Position:=msoBarPopup, MenuBar:=False)
  19.            
  20.             ' Fügen Sie die Werte V2 bis V26 aus "Grundinfos" als Optionen hinzu
  21.            For i = 2 To 26
  22.                 Set cControl = cMenu.Controls.Add(Type:=msoControlButton)
  23.                 cControl.Caption = ws.Cells(i, "V").Value
  24.                 cControl.Tag = i ' Verknüpfen Sie den Index mit der Position in "Grundinfos"
  25.                cControl.OnAction = "ContextMenuClick" ' Die Prozedur, die aufgerufen wird, wenn auf die Option geklickt wird
  26.            Next i
  27.  
  28.             ' Positionieren Sie das Kontextmenü neben dem Cursor
  29.            cMenu.ShowPopup
  30.         End If
  31.     End If
  32. End Sub
  33.  
  34. Sub ContextMenuClick()
  35.     Dim ws As Worksheet
  36.     Dim selectedValue As String
  37.     Dim index As Integer
  38.    
  39.     Set ws = ThisWorkbook.Sheets("Grundinfos")
  40.    
  41.     ' Ermitteln Sie den ausgewählten Wert und den zugehörigen Index
  42.    selectedValue = Application.CommandBars.ActionControl.Caption
  43.     index = Application.CommandBars.ActionControl.Tag
  44.    
  45.     ' Schreiben Sie den Wert aus "Grundinfos" in den Zellbereich W2 bis W26
  46.    ws.Cells(index, "W").Copy
  47.     ThisWorkbook.ActiveSheet.Paste Destination:=ThisWorkbook.ActiveSheet.Range("W2")
  48.     Application.CutCopyMode = False
  49. End Sub
  50.  
Tags: Commandbar
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement