Создание форм видимыми, когда выбрано определенное поле ввода - PullRequest
0 голосов
/ 03 мая 2018

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

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

Sub Test1()
If Range("AK10") = 1 Then
  ActiveSheet.Shapes.Range(Array("ES1")).Visible = msoTrue


End If

If Range("AK11") = 1 Then
  ActiveSheet.Shapes.Range(Array("ES2")).Visible = msoTrue


End If

End Sub

Как-то не работает. Есть идеи на этот счет?

Редактировать: я теперь выполнил это как событие рабочего листа, но все равно не работает

Sub Worksheet_Change(ByVal Target As Range)
   If Target = Range("AK10") = 1 Then
  ActiveSheet.Shapes.Range(Array("ES1")).Visible = msoTrue
    End With
    Target.Select

End If

 If Target = Range("AK11") = 1 Then
  ActiveSheet.Shapes.Range(Array("ES2")).Visible = msoTrue
    End With
    Target.Select

End If


 End Sub

Есть еще идеи?

Лучший Max

1 Ответ

0 голосов
/ 04 мая 2018

Я рекомендую вам просмотреть несколько хороших руководств по основам VBA и базовому синтаксису. Кроме того, всегда делайте отступы в своем коде правильно, чтобы было легче видеть проблемы. Хороший отформатированный код легче понять и поэтому приводит к меньшему количеству проблем. Особенно новички часто считают приятный на вид код ненужным, но это необходимо иметь, и первое, что вы должны изучить: хороший код = меньше ошибок.

В этом случае вы видите, что есть End With, где не должно быть End With, потому что нет With.

Другое дело, что "… все еще не работает" - это худшее описание ошибки, которое вы можете использовать. Вместо этого всегда описывает что происходит или какую ошибку вы получаете и где.

Я предлагаю проверить, пересекается ли Target с вашим Range, а затем проверить значение этого диапазона.

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AK10")) Is Nothing And Range("AK10").Value = 1 Then
        ActiveSheet.Shapes.Range(Array("ES1")).Visible = msoTrue
        Target.Select
    End If

    If Not Intersect(Target, Range("AK11")) Is Nothing And Range("AK11").Value = 1 Then
        ActiveSheet.Shapes.Range(Array("ES2")).Visible = msoTrue
        Target.Select
    End If
End Sub
...