Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / excel 2003, как задать макрос в меню правой клавишей мыши / 13 сообщений из 13, страница 1 из 1
22.12.2011, 09:37
    #37588287
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Задача - надо выбрать в меню правой клавиши мыши макрос, который будет работать, если ячейка НЕ защищена, иначе макрос не активен.
на панели инструментов могу, но не знаю как обратится к меню (по клику правой клавиши мыши).
Спасибо

Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Чтобы наступила смерть - необходима жизненная сила !!!  
...
Рейтинг: 0 / 0
22.12.2011, 11:12
    #37588450
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Вариант со своим меню
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim cmBar As CommandBar, cmb As CommandBarControl
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo Errlab
If CellProtect Then 'проверка на возможность редактирования
    Set cmBar = Application.CommandBars.Add("MyPopupMenu", msoBarPopup, False, True)
    With cmBar
        Set cmb = .Controls.Add(Type:=msoControlButton, Temporary:=True)
        With cmb
            .Caption = "qwer"
            .Style = msoControlButton
'           .FaceId =
'           .OnAction =
        End With
    End With
Errlab:
    Cancel = True
    CommandBars("Shrift").ShowPopup
End If
End Sub
...
Рейтинг: 0 / 0
22.12.2011, 11:29
    #37588507
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Дмит,

спасибо, но что-то у меня МойПопМеню не добавляет...
...
Рейтинг: 0 / 0
22.12.2011, 12:44
    #37588702
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Stepler, у Вас нет функции CellProtect, которая должна возвратить True, если ячейка разрешена для редактирования.
Me.Protection.AllowEditRanges(i).Range - отправная точка для этой функции.
...
Рейтинг: 0 / 0
22.12.2011, 13:38
    #37588858
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Дмит,

Делаю примитивно:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Selection.Locked = False
'On Error GoTo Errlab
'If Selection.Locked = True Then 'ïðîâåðêà íà âîçìîæíîñòü ðåäàêòèðîâàíèÿ
    Set cmBar = Application.CommandBars.Add("m")
    With cmBar
        Set cmb = .Controls.Add(Type:=msoControlButton, Temporary:=True)
        With cmb
            .Caption = "kyky"
            .Style = msoControlButton
'           .FaceId =
'           .OnAction =
        End With
    End With
Errlab:
    'Cancel = True
    'CommandBars("shum").ShowPopup
'End If

End Sub



НЕ добавляет в список меню
Модератор: надо писать не src, а src vba или пользоваться соответствующей кнопочкой. Поправил
...
Рейтинг: 0 / 0
22.12.2011, 13:52
    #37588910
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Ошибки как у Вас так и у меня :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set cmBar = Application.CommandBars.Add("shum", msoBarPopup, False, True)
    With cmBar
        Set cmb = .Controls.Add(Type:=msoControlButton, Temporary:=True)
        With cmb
            .Caption = "kyky"
            .Style = msoControlButton
'           .FaceId =
'           .OnAction =
        End With
    End With
Errlab:
    Cancel = True
    CommandBars("shum").ShowPopup


список меню - как Вы получаете список? Popup не отображается в обычных меню.
...
Рейтинг: 0 / 0
22.12.2011, 14:39
    #37589033
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Дмит,

теперь проходит, но при повторном обращении дает ошибку из-за "shum" (если переназвать, то пройдет, но 1 раз)

Вообще то я хотел другое : записать ентот "куку" в перечень уже имеющихся иконок в списке правой мыши...
...
Рейтинг: 0 / 0
22.12.2011, 14:50
    #37589070
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Нужно изучить Application.CommandBars и найти там CommandBar, отвечающий за контекстное меню. Как-то типа "context" он и называется.
...
Рейтинг: 0 / 0
22.12.2011, 15:32
    #37589169
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Список popup меню:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim cmBar As CommandBar, cmb As CommandBarControl
Dim i As Long
For Each cmBar In Application.CommandBars
    If cmBar.Type = msoBarTypePopup Then
        i = i + 1
        ActiveSheet.Cells(i, 2) = cmBar.Name
        ActiveSheet.Cells(i, 1) = cmBar.Index
    End If
Next


Вызов меню для проверки - Application.CommandBars.Item(31).ShowPopup
Вставка пункта меню:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set cmBar = Application.CommandBars.Item(25)
    With cmBar
        Set cmb = .Controls.Add(Type:=msoControlButton, Temporary:=True)
        With cmb
            .Caption = "qwer"
            .Style = msoControlButton
'           .FaceId =
'           .OnAction = "мойМакрос"
        End With
    End With
...
Рейтинг: 0 / 0
22.12.2011, 16:32
    #37589329
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
31 — плохая идея, на разных машинах может быть разный офис с разными меню. Нужно по имени.
...
Рейтинг: 0 / 0
22.12.2011, 17:13
    #37589449
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Antonariy,

Спасибо, ребята, благодаря вам задачу решил.
Исчо вопрос : есть код на определение файл открыт для чтения или нет ? Понимаю, что в св-вах искать - может есть уже прописанный...
Спасибо
...
Рейтинг: 0 / 0
22.12.2011, 17:57
    #37589574
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
Stepler,
If ActiveDocument.ReadOnly = True Then MsgBox$ "Файл открыт только для чтения"
...
Рейтинг: 0 / 0
22.12.2011, 18:08
    #37589600
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel 2003, как задать макрос в меню правой клавишей мыши
ThisWorkbook.ReadOnly
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / excel 2003, как задать макрос в меню правой клавишей мыши / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]