简体   繁体   English

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM