Скрыть объект на основе значения ячейки - PullRequest
0 голосов
/ 27 марта 2020

У меня есть объект (то есть прямоугольник с именем "Форма") в электронной таблице, который я хотел бы скрыть на основе значения ячейки (A1). Вот что я пробовал после поиска по inte rnet, но он не работает. Я прошу прощения, я не эксперт VBA в любом случае. Я обычно могу разобраться, основываясь на поиске в сети, но этот вводит меня в заблуждение.

Private Sub HideShape(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 1 Then _
        Me.Shapes("Shape").Visible = (Cells(1, 1).Value = 1)
End Sub

У меня есть шесть объектов, которые я хочу обрабатывать аналогичным образом, основываясь на шести значениях ячеек. Вот код, который я попробовал:

Private Sub Worksheet_Calculate()
    Me.Shapes("ProjMgmt").Visible = (Me.Cells(101, 3).Value = 0)
    Me.Shapes("Planning").Visible = (Me.Cells(102, 3).Value = 0)
    Me.Shapes("Implementation").Visible = (Me.Cells(103, 3).Value = 0)
    Me.Shapes("Supplier").Visible = (Me.Cells(104, 3).Value = 0)
    Me.Shapes("Process").Visible = (Me.Cells(105, 3).Value = 0)
    Me.Shapes("Customer").Visible = (Me.Cells(106, 3).Value = 0)
End Sub

Он работает с одной формой, но не работает с этими шестью формами.

1 Ответ

0 голосов
/ 27 марта 2020

Если вы пытаетесь использовать событие Worksheet_Change, вы не можете изменить Worksheet_Change на HideShape ... оно должно быть Worksheet_Change.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 1 Then _
        Me.Shapes("Shape").Visible = (Me.Cells(1, 1).Value = 1)
End Sub

Если есть это формула в A1, тогда вы должны использовать Worksheet_Calculate:

Private Sub Worksheet_Calculate()
    Me.Shapes("Shape").Visible = (Me.Cells(1, 1).Value = 1)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...