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