Доступ к VBA. Как выполнить много кнопок, используя одну кнопку? - PullRequest
3 голосов
/ 10 ноября 2009

У меня есть форма с несколькими кнопками. Я хочу создать кнопку, которая будет выполнять все кнопки одну за другой, после того как каждая функция кнопок будет завершена. Кроме того, я хотел бы изменить цвет кнопок, чтобы показать, какая кнопка выполняется. Как мне это сделать?

Ответы [ 4 ]

5 голосов
/ 11 ноября 2009

Хорошая практика программирования - не помещать код в событие объекта, такое как событие щелчка. Вместо этого код должен быть помещен в их собственные методы, которые вызываются событием click. Затем, когда вам нужно запустить целую кучу из них, вам не нужно вызывать событие click каждой кнопки, а вместо этого запускать каждый из методов, которые события click вызывают напрямую.

Private Sub DoSomething()

  'Code to do something

End Sub

Private Sub DoSomethingElse()

  'Code to do something else

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs)

  DoSomething

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs)

  DoSomethingElse

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs)

  DoSomething
  DoSomethingElse

End Sub

Это также делает гораздо более тестируемый код ... не то, чтобы этот код был особенно тестируемым внутри приложения Microsoft Office. Но это наиболее распространенная отраслевая практика.

1 голос
/ 10 ноября 2009

Все, что вам нужно сделать, это вызвать событие Click кнопок внутри события Click одной кнопки.

Также у командных кнопок в Access нет свойства BackColor, обходной путь может заключаться в том, чтобы использовать сторонние инструменты, или Вы можете использовать изображение и использовать его в качестве свойства «кнопки» командной кнопки.

0 голосов
/ 12 ноября 2009

У меня также есть способ изменить цвет. хотя я не изменяю цвет кнопки, я могу по крайней мере изменить цвет надписи на кнопке, используя параметр forecolor.

0 голосов
/ 10 ноября 2009
Private Sub myUltraGroupingButton_Click()
    Call cmdButton1_Click()
    Call cmdButton2_Click()
    Call cmdButton3_Click()
    Call cmdButton4_Click()
End Sub

Если вы хотите автоматизировать это, и если это форма, вам нужно будет выполнить итерацию по Form.Controls. Если это рабочий лист, думаю, вам нужно использовать Worksheet1.ListObjects

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