选择某个输入字段时使表单可见

时间:2018-05-03 15:06:08

标签: excel vba image excel-vba visible

所以下面的问题:我有一个国家的地图有不同的邮政编码区域,如果在下拉列表中选择了邮政区域(总共两个将被选中,出发和到达或多或少),那么图片指的是邮政区应该出现,否则应该隐藏。我创建了一个列,如果选择了该区域,则按公式键入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

还有其他想法吗?

最佳

最大

1 个答案:

答案 0 :(得分:1)

我建议您查看一些有关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