Почему моя кнопка VBA ведет себя странно при вызове onAction? - PullRequest
1 голос
/ 03 ноября 2010

Я получаю следующее сообщение, когда вызывается метод onAction моей кнопки VBA. Макрос может быть недоступен в этой книге или все макросы могут быть отключены

В файле test.xlsm в файле ThisWorkbook у меня есть очень простой код

Option Explicit
Private Sub Workbook_Open()
    UpdateMenuSR
End Sub
Private Sub UpdateMenuSR()
Dim cb As CommandBarButton
Dim Solver As CommandBar

For Each Solver In Application.CommandBars
    If Solver.name = "Test" Then Exit Sub
Next Solver

Set Solver = Application.CommandBars.Add("Test", msoBarFloating, False)
With Solver
    .Visible = True
    With .Controls
        Set cb = .Add(Type:=msoControlButton)
        With cb
            .FaceId = 31
            .Visible = True
            .OnAction = "!b"
        End With
        Set cb = .Add(Type:=msoControlButton)
        With cb
            .FaceId = 19
            .Visible = True
            .OnAction = "!c"
        End With
        Set cb = .Add(Type:=msoControlButton)
        With cb
            .FaceId = 30
            .Visible = True
            .OnAction = "!a"
        End With
        Set cb = .Add(Type:=msoControlButton)
        With cb
            .FaceId = 8
            .Visible = True
            .OnAction = "!d"
        End With
   End With
End With
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ctrl As CommandBarControl
Application.CommandBars("Test").Delete
For Each ctrl In Application.CommandBars("Tools").Controls
    If ctrl.Tag = "Test" Or ctrl.Tag = "Test" Then
        ctrl.Delete
    End If
Next ctrl
End Sub

В основном модуле у меня есть только

Public Sub a()
MsgBox "a"
End Sub


Public Sub d()
MsgBox "d"
End Sub


Public Sub b()
MsgBox "b"
End Sub


Public Sub c()
MsgBox "c"
End Sub

Если я выполняю следующую процедуру:

  • Создайте новый файл test2.xlsx

  • Открыть test.xlsm

  • Открыть test2.xslx

  • Нажав один за другим на кнопках:

Результаты в: "b"

"Cannot run the macro '[test.xslm]Sheet1A:A'. The macro may not be available in this   workbook or all macros may be disabled"

"a"

"Cannot run the macro 'd'. The macro may not be available in this workbook or all macros may be disabled"
  • Перейти к test.xlsm

Результаты в:

 "b"

"Cannot run the macro '[test.xslm]Sheet1A:A'. The macro may not be available in this wo rkbook or all macros may be disabled"

 "a"

 "d"

Можеткто-нибудь мне помочь?

1 Ответ

0 голосов
/ 07 ноября 2010

Я взломал проблему.Просто добавьте две невидимые кнопки:

    Set cb = .Add(Type:=msoControlButton)
    With cb
        .Visible = False
    End With

    Set cb = .Add(Type:=msoControlButton)
    With cb
        .Visible = False
    End With

Поэтому видимые кнопки работают правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...