magyarpityu Creative Commons License 2011.08.11 0 0 15805

Szia Jimmy!

 

Köszönöm a választ, megint tanultam tőled! :))

 

Ezt a 4 elemű tömböt én is nézegettem, de nem tudtam kiokoskodni, milyen adatokat is tárol. Végül megtaláltam a megoldást:

 

Sub szamol()
  Dim Param1 As Integer, Param2 As String
  Dim MenuCommand As CommandBarControl
  Set MenuCommand = CommandBars.ActionControl
  If Not TypeName(MenuCommand) = "CommandBarButton" Then Exit Sub
  Param1 = MenuCommand.Tag
  Param2 = MenuCommand.DescriptionText
  ...

 

A menü több szintes, minden szinten CommandBarControl objektumok szerepelnek. Azokat a menüpontokat, amelyek valamilyen feladatot hajtanak végre, vagyis amelyek meghívják a szamol() makrót, azokat msoControlButton típussal hoztam létre:

 

AlMenu(k).OnAction = "szamol"

AlMenu(k).DescriptionText = "..." 'Param2

AlMenu(k).Tag = "..." 'Param1

 

Azok a menüpontok, amelyekből almenü nyílik, azok msoControlPopup típusúak, és nincs .OnAction tulajdonságuk (pontosabban, ezt a tulajdonságát nem irányítottam a szamol() makróra).

 

Mikor a menüből meghívódik a 'szamol' makró, akkor a CommandBars.ActionControl tartalmazza azt a referenciát, amire szükségem van. Felvettem a 'szamol' makróban egy CommandBarControl típusú objektumot, ennek adtam át a CommandBars.ActionControl referenciát, és innentől kiolvashattam a korábban minden menüpontra egyedileg jellemző .DescriptionText és .Tag tulajdonságokat. Így már át tudok adni paramétereket a meghívott makrónak. Sőt, akár három paraméter is átadható, mert a .Parameter tulajdonság is használható.

Még egyszer köszönöm a segítséget!

Előzmény: Törölt nick (15804)