Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Всплывающее меню в Excel / 10 сообщений из 10, страница 1 из 1
24.07.2008, 10:14
    #35448735
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Здаравствуйте, уважаемые программисты!

Вот задачка: хочу, чтобы в файлике (его я прикрепил) при щелчке правой кнопкой мыши на ячейке A16 выскакивала менюшка, в которой была бы строчка "График". Если на ней нажать, строился бы график по всей строке "итого активы"

Возможно???
...
Рейтинг: 0 / 0
25.07.2008, 10:06
    #35451219
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim myBar As CommandBar
    Dim myItem As CommandBarControl
    
    Set myBar = CommandBars("Query")
    If Target.Address = "$A$16" Then
        myBar.Reset
        Set myItem = myBar.Controls.Add(Type:=msoControlButton)
        With myItem
            .Caption = "CreateChart"
            .OnAction = "CreateChart"
        End With
        
    Else
        myBar.Reset
    End If
End Sub
Sub CreateChart()
    Dim rng As Range
    Set rng = ActiveCell
    Set rng = rng.Resize(, Worksheets(rng.Parent.Name).Cells(rng.Row, Columns.Count).End(xlToLeft).Column)
    If rng.Count <  2  Then Exit Sub
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=rng, PlotBy:=xlRows
    ActiveChart.Location Where:=xlLocationAsNewSheet
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = rng.Cells( 1 ,  1 ).Text
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
End Sub
...
Рейтинг: 0 / 0
25.07.2008, 16:31
    #35452719
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Вау, других слов у меня нет!
Но возникает вопрос: а как заблокировать все остальные кнопки и оставить только "Create Chart"?
...
Рейтинг: 0 / 0
25.07.2008, 20:33
    #35453178
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
В цикле обойти myBar.Controls и удалить все контролы.
...
Рейтинг: 0 / 0
28.07.2008, 11:18
    #35454713
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Set myBar = CommandBars("Query")

Видимо, проблема в этой строке: она не работает в др. файлах. Видимо, менюха такая появляется, когда в книге - запрос Web.

Как называется стандартное всплывающее меню? CommandBars("Standard") - не то, а где посмотреть не знаю(((
...
Рейтинг: 0 / 0
28.07.2008, 17:25
    #35456134
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
PlanBSet myBar = CommandBars("Query")

Видимо, проблема в этой строке: она не работает в др. файлах. Видимо, менюха такая появляется, когда в книге - запрос Web.

Как называется стандартное всплывающее меню? CommandBars("Standard") - не то, а где посмотреть не знаю(((

всплывающее меню - называется "контекстное меню"
то что ты ищешь наз "cell"
...
Рейтинг: 0 / 0
28.07.2008, 17:43
    #35456174
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Безмерно благодарен! Всё работает! А я б ещё год справку читал
...
Рейтинг: 0 / 0
05.08.2008, 10:03
    #35470356
Рустик_Уфа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
А как сделать чтобы например контекстное меню появлялось не при щелчке по определенной ячейки, а, к примеру целой колонки ? т.е не "А16" а в любом месте колонки "А[x]" ?
...
Рейтинг: 0 / 0
05.08.2008, 10:10
    #35470386
Рустик_Уфа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
Пока писал вопрос придумал, как реализовать, вдруг кому надо будет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim myBar As CommandBar
    Dim myItem As CommandBarControl
    Dim tmp As String
    tmp = Target.Address
        
        Set myBar = CommandBars("Query")
    If Left(tmp,  2 ) = "$A" Then
        myBar.Reset
        Set myItem = myBar.Controls.Add(Type:=msoControlButton)
        With myItem
            .Caption = "CreateChart"
            .OnAction = "CreateChart"
        End With
        
    Else
        myBar.Reset
    End If
End Sub
...
Рейтинг: 0 / 0
05.08.2008, 10:11
    #35470388
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее меню в Excel
If Target.Column=1
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Всплывающее меню в Excel / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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