Создание играбельного лабиринта в MS Excel: отключение кнопки в определенной ячейке - PullRequest
0 голосов
/ 11 октября 2018

Ребята, можете ли вы помочь мне?В настоящее время я делаю игру-лабиринт в MS EXCEL, и я сделал свои кнопки «вверх», «вниз», «влево», «вправо» и дал ей команду смещения (находится в модуле), я думаю об отключении определенных кнопоккогда ячейка окружена стеной (не может идти влево или вправо и т. д.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim b1, b2, b3, b4 As Button
        Set b1 = ActiveSheet.Buttons("Up").up_Click
        Set b2 = ActiveSheet.Buttons("Down").down_click
        Set b3 = ActiveSheet.Buttons("Left").left_click
        Set b4 = ActiveSheet.Buttons("Right").right_click
            If Selection.Count = 1 Then
             If Not Intersect(Target, Range("AF9")) Is Nothing Then
                    b1.Enabled = False
                    b2.Enabled = True
                    b3.Enabled = False
                    b4.Enabled = False

             End If
        End If
End Sub

Я попробовал этот код (находится на листе; не в модуле), чтобы кнопки отключались, ноЯ получаю сообщение об ошибке «Ошибка времени выполнения 1004: невозможно правильно получить кнопки класса рабочего листа», а затем выделяется код «Set b1 = ActiveSheet.Buttons (« Up »). up_Click».Я не знаю, что изменить в коде.Пожалуйста, помогите.(если вы, ребята, хотите предложить другой способ изготовления стен, пожалуйста, не стесняйтесь: D)

1 Ответ

0 голосов
/ 11 октября 2018

Рабочие листы не имеют коллекции .Buttons(), а кнопки не имеют обработчика событий up_Click.

Похоже, что вы используете фактические элементы управления кнопками (в отличие от использования ячеек, которые выглядят каккак кнопки).Вы можете включать и отключать элемент управления ActiveX Button, но не элемент управления Form Button.Есть разница.Если вы используете элементы управления Form Button на листе, вам необходимо заменить их на ActiveX Button Controls.Если вы называете кнопки «CommandButton_up», «CommandButton_down», «CommandButton_right» и «CommandButton_left», то в Worksheet_SelectionChange вы можете отключить их следующим образом:

CommandButton_up.Enabled = False
CommandButton_down.Enabled = False
CommandButton_right.Enabled = False
CommandButton_left.Enabled = False

Вам, конечно, понадобится большеЛогика окружает, когда и как вы их отключаете, но именно так вы взаимодействуете с элементом управления ActiveX, расположенным на листе.

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