[英]Hide rows in sheet 1 and 2 based on cell value in sheet 1
我需要一個VBA,它將基於Sheet(“ Progression”)。Range(“ A8”)的值在sheet1(稱為“ Progression”) 和 sheet2(稱為“ Map”)上隱藏行34:53。
單元格A8是顯示澳大利亞城市的下拉菜單。 我已經安排好了,如果我需要隱藏行,將在城市名稱后輸入一個空格(例如,“墨爾本”將需要隱藏的行,“墨爾本”將需要可見的行)。 目前,我的代碼遍歷每個位置(帶空格和不帶空格),這有點煩人。有沒有辦法說“如果A8帶有“ *”,則在Sheet(“ Progression”)上隱藏第34:53行, Sheet(“ Map”)“上的第34:53行
我當前的代碼如下(位於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
任何幫助,將不勝感激 :)
由於您需要在所選值的最后一個字符帶有空格的情況下隱藏行,因此以下代碼應該可以工作
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
可能是這樣的:
在select語句中,設置變量而不是隱藏行。
然后,使用單獨的語句來設置變量的行可見性,並對其他工作表也是如此。
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)
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.