[英]Hide rows in sheet 1 and 2 based on cell value in sheet 1
I need a VBA which will hide rows 34:53 on sheet1 (called "Progression") and sheet2 (called "Map") based on the value of Sheet("Progression").Range("A8") 我需要一个VBA,它将基于Sheet(“ Progression”)。Range(“ A8”)的值在sheet1(称为“ Progression”) 和 sheet2(称为“ Map”)上隐藏行34:53。
Cell A8 is a dropdown menu displaying Australian cities. 单元格A8是显示澳大利亚城市的下拉菜单。 I've already arranged that a blank space will be entered after the city name if I need the rows to be hidden (eg "Melbourne " will require hidden rows, "Melbourne" will require visible rows).
我已经安排好了,如果我需要隐藏行,将在城市名称后输入一个空格(例如,“墨尔本”将需要隐藏的行,“墨尔本”将需要可见的行)。 I've currently got the code going through each location with and without spaces which is a bit annoying...is there a way to say "If A8 has "* " then hide rows 34:53 on Sheet("Progression") and rows 34:53 on Sheet("Map")"
目前,我的代码遍历每个位置(带空格和不带空格),这有点烦人。有没有办法说“如果A8带有“ *”,则在Sheet(“ Progression”)上隐藏第34:53行, Sheet(“ Map”)“上的第34:53行
My current code is below (located on Sheet("Progression")). 我当前的代码如下(位于Sheet(“ Progression”)上)。
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
Any help would be appreciated :) 任何帮助,将不胜感激 :)
Since you require to hide rows if the last character in the selected value has a space, the below code should work 由于您需要在所选值的最后一个字符带有空格的情况下隐藏行,因此以下代码应该可以工作
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
Maybe like this: 可能是这样的:
In the select statement set a variable instead of hiding the rows. 在select语句中,设置变量而不是隐藏行。
Then use a separate statement to set the row visibility with the variable and do that for the other sheet, too. 然后,使用单独的语句来设置变量的行可见性,并对其他工作表也是如此。
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
You could go like follows: 您可以像下面这样去:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.