簡體   English   中英

Excel VBA隱藏基於另一個單元格選擇的行無法使代碼正常工作

[英]Excel VBA to hide rows based on another cell selection can't get code to work

我有以下代碼,我試圖根據其他單元格的結果來隱藏特定的行。 (此單元格中有一個公式,可將其他一系列單元格的結果組合成字母-A,B,C等)

但是,我的代碼中肯定有問題,因為我無法使它正常工作-無論我對目標單元格進行了什么更改,都沒有任何變化。

這是我的代碼-如果有任何相關意義,我正在使用Excel 2016

Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "G26" Then
Select Case Target.Value
        Case "A": Rows("45:45,47,53:57,77:78").Hidden = True
        Case "B": Rows("40:52,77, 78,80,,85").Hidden = True
        Case "C": Rows("43,45,46,47,49,53:57,61:83").Hidden = True
        Case "D": Rows("40:49,53:57,77,78,80").Hidden = True
        Case "E": Rows("53:57").Hidden = True
        Case "F": Rows("43,46,47,50:57").Hidden = True
        Case "G": Rows("43,45:47,50:53").Hidden = True
        Case "FG": Rows("43,46,47,50:57").Hidden = True
        Case "H": Rows("41:42,44,45:57,77,78,80").Hidden = True
        Case "I": Rows("40:49,53:57,77:78,80:82").Hidden = True
        Case "HI": Rows("41:42,44,45:49,53:57,77,78,80").Hidden = True
        Case "J": Rows("41:57,63,67,72,74:83").Hidden = True
        Case "": Rows("40:85").Hidden = False
    End Select
End If
End Sub

使用Range().EntireRow.Hidden而不是Rows().Hidden允許使用所需格式的行列表

即替換您的

Rows("xyz").Hidden = True

Range("xyz").EntireRow.Hidden = True

我在您的原始代碼上使用了find and replace來產生以下內容(請注意,在其中一行中,我還刪除了一個雙逗號,)-嘗試以下操作:

Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "G26" Then
Select Case Target.Value
        Case "A": Range("45:45,47:47,53:57,77:78").EntireRow.Hidden = True
        Case "B": Range("40:52,77:78,80:80,85:85").EntireRow.Hidden = True
        Case "C": Range("43:43,45:47,49:49,53:57,61:83").EntireRow.Hidden = True
        Case "D": Range("40:49,53:57,77:78,80:80").EntireRow.Hidden = True
        Case "E": Range("53:57").EntireRow.Hidden = True
        Case "F": Range("43:43,46:47,50:57").EntireRow.Hidden = True
        Case "G": Range("43:43,45:47,50:53").EntireRow.Hidden = True
        Case "FG": Range("43:43,46:47,50:57").EntireRow.Hidden = True
        Case "H": Range("41:42,44:57,77:78,80:80").EntireRow.Hidden = True
        Case "I": Range("40:49,53:57,77:78,80:82").EntireRow.Hidden = True
        Case "HI": Range("41:42,44:45:49,53:57,77:78,80:80").EntireRow.Hidden = True
        Case "J": Range("41:57,63:63,67:67,72:72,74:83").EntireRow.Hidden = True
        Case "": Range("40:85").EntireRow.Hidden = False
    End Select
End If
End Sub

更新的答案

Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Range("G26").Value
        Case "A": Range("45:45,47:47,53:57,77:78").EntireRow.Hidden = True
        Case "B": Range("40:52,77:78,80:80,85:85").EntireRow.Hidden = True
        Case "C": Range("43:43,45:47,49:49,53:57,61:83").EntireRow.Hidden = True
        Case "D": Range("40:49,53:57,77:78,80:80").EntireRow.Hidden = True
        Case "E": Range("53:57").EntireRow.Hidden = True
        Case "F": Range("43:43,46:47,50:57").EntireRow.Hidden = True
        Case "G": Range("43:43,45:47,50:53").EntireRow.Hidden = True
        Case "FG": Range("43:43,46:47,50:57").EntireRow.Hidden = True
        Case "H": Range("41:42,44:57,77:78,80:80").EntireRow.Hidden = True
        Case "I": Range("40:49,53:57,77:78,80:82").EntireRow.Hidden = True
        Case "HI": Range("41:42,44:45:49,53:57,77:78,80:80").EntireRow.Hidden = True
        Case "J": Range("41:57,63:63,67:67,72:72,74:83").EntireRow.Hidden = True
        Case "": Range("40:85").EntireRow.Hidden = False
    End Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(False, False) = "D25" Then
Select Case Target.Value
    Case "Select as appropriate": Range("40:85").EntireRow.Hidden = False
    Case "USA - Breen Road": Range("45:45,47:47,53:57,77:78").EntireRow.Hidden = True
    Case "USA - Conroe": Range("40:52,77:78,80:80,85:85").EntireRow.Hidden = True
    Case "USA - Lafayette": Range("43:43,45:47,49:49,53:57,61:83").EntireRow.Hidden = True
    Case "Europe - Aberdeen": Range("40:49,53:57,77:78,80:80").EntireRow.Hidden = True
    Case "Europe - Gateshead": Range("53:57").EntireRow.Hidden = True
    Case "Middle East - Dubai": Range("43:43,46:47,50:57").EntireRow.Hidden = True
    Case "Middle East - Saudi Arabia": Range("43:43,45:47,50:53").EntireRow.Hidden = True
    Case "middle East - All": Range("43:43,46:47,50:57").EntireRow.Hidden = True
    Case "Far East - Singapore - Loyang": Range("41:42,44:57,77:78,80:80").EntireRow.Hidden = True
    Case "Far East - Singapore - Tuas": Range("40:49,53:57,77:78,80:82").EntireRow.Hidden = True
    Case "Far East - Singapore - All": Range("41:42,44:45:49,53:57,77:78,80:80").EntireRow.Hidden = True
    Case "Far East - Perth - Australia": Range("41:57,63:63,67:67,72:72,74:83").EntireRow.Hidden = True
    End Select
End If

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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