Как запросить флажок (True / False) в макросе с помощью If-функции - PullRequest
0 голосов
/ 17 марта 2020

Как я могу скрыть / показать столбцы и строки на другом листе («План проекта») в той же книге с помощью флажка? Если флажок установлен, они не должны быть скрыты. Если флажок не установлен, они должны быть скрыты. Флажки находятся на собственном листе («Руководство»). Я пробовал следующее, но получаю сообщение об ошибке «Ошибка времени выполнения« 424 »: требуется объект»

Sub Team_Availability_Click()

Dim rng As Range

Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")

   If Team_Availability.Value = False Then
    rng.Hidden = True

   ElseIf Team_Availability.Value = True Then
    rng.Hidden = False    

End If
End Sub

В качестве альтернативы я попробовал этот способ, обнаружив аналогичный вопрос с использованием какого-либо объекта:

Проверка, установлен ли флажок на основе листа

Sub Team_Availability_Click()

Dim rng As Range
Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")

 If ThisWorkbook.Worksheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = 0 Then
    rng.Hidden = True

 ElseIf ThisWorkbook.Worksheets("Guidelines").OLEFormat.Object.Value = 1 Then
    rng.Hidden = False

End If
End Sub

Здесь я получаю сообщение об ошибке

Элемент с указанным имя не найдено.

Я не представил дим / сет, я думаю. Теперь это самая новая версия:

Теперь я получаю сообщение об ошибке в строке Set cb = ActiveSheet..., говорящее

Элемент с указанным именем не найден.

Sub Team_Availability_Click()

Dim cb As Shape
Dim rng As Range

Set cb = ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability")
Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")

 If ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = -4146 Then
    rng.Hidden = True

 ElseIf ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = 1 Then
    rng.Hidden = False

 End If

End Sub

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Я посмотрел на твой код и на самом деле не работал, когда попробовал. Этот код работал для описанной вами задачи, надеюсь, он поможет.

Sub CheckBoxHIDE()
    Dim ws As Worksheet
    Dim chk As CheckBox

    Set ws = ActiveSheet
    Set chk = ws.CheckBoxes(Application.Caller)

    Select Case chk.Value
       Case 1   'box is checked
          Columns("D").Hidden = True

       Case Else   'box is not checked
          'do nothing 

    End Select
End Sub 
0 голосов
/ 08 апреля 2020

Я нашел ошибку вместе с другом. В верхнем левом углу я не назначил указанное c имя для контрольного флажка. Я только что установил имя макроса / sub и описание. Теперь он работает.

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