|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
Было такое что установил некотрый прибамбас к ворду (ocx кажется) и после его запуска появился новый пункт меню. Как можно с помощью VBA добавить пункт меню в Excel, поставить его на первую позицию и ассоциировать с функцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 09:36 |
|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
Вы хотите пункт меню именно Excel ( Развернуть, свернуть и т.д.) или же менб из семейства CommandBars. Если 2 то так : Public Sub CreateMenu() dim YourMenu As CommandBar Dim tmpCommandBar As CommandBar const MNUNAME as string="YourMenu" For Each tmpCommandBar In Application.CommandBars If tmpCommandBar.Name = MNUNAME Then CommandBars( MNUNAME).Delete Exit For End If Next Set YourMenu = CommandBars.Add(Name:= MNUNAME , Position:=msoBarTop, MenuBar:=False, temporary:=True) With YourMenu.Controls.Add(msoControlButton) .Style = msoButtonIconAndCaption .BeginGroup = True .Caption = "Ля-ля-ля" .OnAction = "SomeAction" .FaceId = 548 End With YourMenu.Visible = True End Sub public sub SomeAction msgbox "Ля-ля-ля" end sub Если надо не панель а замена меню тогда Set YourMenu = CommandBars.Add(Name:= MNUNAME , Position:=msoBarTop, MenuBar:=True, temporary:=True) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 09:53 |
|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
Да именно об этом меню идет речь (ФАЙЛ, ПРАВКА, ... ОКНА...) Спасибо. Я здесь еще один чайниковский вопросец задам: как из мною написанной функции вернуть ресультать на делфи это result:=... на C return ... а на басике как? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 10:06 |
|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
'пример из MSDN: 'MSDN то у тебя есть? Становишься курсором перед словом "Function" и жмешь F1. Function BinarySearch(. . .) As Boolean . . . ' Value not found. Return a value of False. If lower > upper Then BinarySearch = False Exit Function End If . . . End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 10:31 |
|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
Так это не имеет отношения к Excel. Юзайте API для работы с меню. Вот пример из апплемана Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Const MF_STRING = &H0 Private Const SCOFFSET = 2000 Private Sub YourMenu() Dim H As Long, M As Long, M1 As Long H = FindWindow("XLMAIN", vbNullString) M = GetSystemMenu(H, False) M1 = AppendMenu(M, MF_STRING, SCOFFSET, "Menu") End Sub Хотя я бы не стал лазить в системное меню - у сабжа есть свои панели. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 10:59 |
|
Как программно вставить новый пункт меню в Excel?
|
|||
---|---|---|---|
#18+
(Напомню, что пишу на VBA в Excel'е) Метод, который должен возвращать результат у меня оформлен как sub MyMethod() End Sub Значит мне его заменить на function MyMethod() As String MyMethod="Hellow" End Я првильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 11:02 |
|
|
start [/forum/topic.php?fid=60&fpage=406&tid=2170902]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 461ms |
0 / 0 |