簡體   English   中英

根據工作表1中的單元格值隱藏工作表1和2中的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM