根据表格1中的单元格值,隐藏表格1和2中的行

我需要一个VBA,它将根据Sheet(“Progression”)的值将sheet1(称为“Progression”) sheet2(称为“Map”)的行34:53隐藏。Range(“A8”)

单元格A8是显示澳大利亚城市的下拉菜单。 如果我需要隐藏行(例如,“墨尔本”需要隐藏行,“墨尔本”将需要可见行),我已经安排在城市名称之后input空格。 我现在已经通过每个位置的代码有和没有空间这是有点烦人…有没有办法说:“如果A8有”*“,然后隐藏行(”进步“)34:53 工作表(“地图”)上的行34:53“

我目前的代码如下(位于表(“进展”))。

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False, False) = "A8" Then Select Case Target.Value Case "Queensland": Rows("34:53").Hidden = False Case "Queensland ": Rows("34:53").Hidden = True Case "Melbourne": Rows("34:53").Hidden = False Case "Melbourne ": Rows("34:53").Hidden = True Case "Ballarat": Rows("34:53").Hidden = False Case "Ballarat ": Rows("34:53").Hidden = True Case "Brisbane": Rows("34:53").Hidden = False Case "Brisbane ": Rows("34:53").Hidden = True Case "Canberra": Rows("34:53").Hidden = False Case "Canberra ": Rows("34:53").Hidden = True Case "North Sydney": Rows("34:53").Hidden = False Case "North Sydney ": Rows("34:53").Hidden = True Case "Strathfield": Rows("34:53").Hidden = False Case "Strathfield ": Rows("34:53").Hidden = True End Select End If End Sub 

任何帮助,将不胜感激 :)

也许这样:

在select语句中设置一个variables而不是隐藏行。

然后使用一个单独的语句来设置variables的行可见性,并为其他工作表执行该操作。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim trigger As Boolean If Target.Address(False, False) = "A8" Then Select Case Target.Value Case "Queensland": trigger = False Case "Queensland ": trigger = True Case "Melbourne": trigger = False Case "Melbourne ": trigger = True Case "Ballarat": trigger = False Case "Ballarat ": trigger = True Case "Brisbane": trigger = False Case "Brisbane ": trigger = True Case "Canberra": trigger = False Case "Canberra ": trigger = True Case "North Sydney": trigger = False Case "North Sydney ": trigger = True Case "Strathfield": trigger = False Case "Strathfield ": trigger = True End Select End If ThisWorkbook.Worksheets("Progression").Rows("34:53").Hidden = trigger ThisWorkbook.Worksheets("Map").Rows("34:53").Hidden = trigger End Sub 

既然你需要隐藏行,如果所选值的最后一个字符有一个空格,下面的代码应该工作

 Private Sub Worksheet_Change(ByVal Target As Range) Dim trigger As Boolean If Target.Address(False, False) = "A8" Then trigger = False If Right(Target.Value, 1) = " " Then trigger = True End If End If ThisWorkbook.Worksheets("Progression").Rows("34:53").Hidden = trigger ThisWorkbook.Worksheets("Map").Rows("34:53").Hidden = trigger End Sub 

你可以如下所示:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$8" Then Rows("34:53").Hidden = Right(Target.Value, 1) = " " ' <--| "Progression" is your active sheet Worksheets("Map").Rows("34:53").Hidden = Right(Target.Value, 1) = " " End If End Sub