Нажмите CommandButton на другом рабочем листе, нажав другую кнопку Command - PullRequest
1 голос
/ 12 ноября 2010

У меня есть несколько командных кнопок на разных листах.Теперь я хочу, чтобы пользователь мог запускать все сразу, если хотел.Поэтому я хочу использовать новую CommandButton, которая запускает все CommandButton во всех рабочих листах.Однако я всегда получаю сообщение об ошибке. Мне нужно подойти и у меня ничего не вышло:

запуск субмарин:

Private Sub CommandButtonX_Click()


run CommandButtonY_Click

run CommandButtonZ_Click

etc.

end sub

.. Ничего не происходит

Мой другой подход - выбрать все рабочие листы и «активировать кнопку комманд», которая всегда называется CommandButton1_Click, однако я до сих пор не знаю, как это сделать

Это был мой подход:

Sheets(Array("AA", "BB", "CC",etc.).Select
    Sheets("AA").ActivateCall 

Call CommandButton1_Click

End Sub

Я новичок в этом, поэтому я очень признателен за вашу помощь!

Спасибо!

Йенс

Ответы [ 2 ]

3 голосов
/ 13 ноября 2010

Это чисто дизайнерское мнение, но я бы попытался решить эту проблему по-другому.

Я бы предпочел, чтобы мои подпрограммы были в отдельном модуле и просто вызывали их с помощью кнопки. То есть событие _Click просто выглядит примерно так:

Private Sub Command1_Click()
    Call DoSomeStuff
End Sub

В то время как в отдельном модуле все мои сабы сгруппированы соответственно:

Sub DoSomeStuff()
    Sheet1.Range("A1").Value = "Hooray for VBA"
End Sub

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

Тогда ваша «Мастер-кнопка» просто вызывает все подводные лодки:

Private Sub Command1_Click()
    Call DoSomeStuff
    Call DoSomeMoreStuff
    Call DoTheFinalStuff
End Sub
2 голосов
/ 13 ноября 2010

Какое сообщение об ошибке вы получаете?

Какую версию Excel вы используете?

Этот код отлично работает в Excel 2007 в Windows 7:

Sub Button1_Click()
    MsgBox ("Hey there, I'm button 1")
End Sub

Sub Button2_Click()
    MsgBox ("Hey there, I'm button 2")
End Sub

Sub Button3_Click()
    MsgBox ("Hey there, I'm button 3")
End Sub

Sub Button4_Click()
    Button1_Click
    Button2_Click
    Button3_Click
End Sub

У меня есть 3 кнопки, каждая на отдельном листе, и все они отображают сообщение, которое их идентифицирует. Четвертая кнопка также находится на отдельном рабочем листе и отображает остальные 3 сообщения одно за другим, как и следовало ожидать.

Можете ли вы прикрепить сообщение об ошибке к вашему сообщению?

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