簡體   English   中英

VBA-根據另一行的隱藏/隱藏狀態隱藏/隱藏行

[英]VBA - Hide/unhide row based on hidden/unhidden status of another row

我正在嘗試編寫一些VBA代碼,如果隱藏了另一個特定行,它將取消隱藏整個行。 該宏還將根據特定列中的值隱藏行的范圍。 這方面工作正常-我有可靠的代碼。 我無法獲得我所描述的第一個功能。 應該很容易做到,只是不知道語法。 該子例程應在打開工作簿時執行。

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim targ As Range
Dim msg As Range

targ = "DETAILS!B6"
msg = "DETAILS!B42"

msg.EntireRow.Hidden = True


With Range("DETAILS!B6:B40")
        .EntireRow.Hidden = False

        For Each cell In Range("DETAILS!B6:B40")
        Select Case cell.Value

        Case Is = 0
        cell.EntireRow.Hidden = True

        End Select
        Next cell
End With


If targ.EntireRow.Hidden = True Then
    msg.EntireRow.Hidden = False
End If

Application.ScreenUpdating = True
End Sub

您需要像下面那樣設置變量

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim targ As Range
Dim msg As Range

Set targ = "DETAILS!B6"
Set msg = "DETAILS!B42"

msg.EntireRow.Hidden = True


With Range("DETAILS!B6:B40")
    .EntireRow.Hidden = False

    For Each cell In Range("DETAILS!B6:B40")
    Select Case cell.Value

    Case Is = 0
    cell.EntireRow.Hidden = True

    End Select
    Next cell
End With


If targ.EntireRow.Hidden = True Then
    msg.EntireRow.Hidden = False
End If

Application.ScreenUpdating = True
End Sub

哦! 只需將Set放在targmsg之前,因為它們是Range 聲明范圍時,必須具有Set ,即Set myRng = Range("A1:A10")

如果僅Set Targ = "DetailsB6"不起作用,則可能需要Set targ = Range("Details!B6")

Set Targ = "Details!B6"考慮,如果您將Dim Targ as Range ,我認為Set Targ = "Details!B6"將不起作用。 您正在將范圍變暗,但聲明它像字符串一樣。 您需要將其設置為Range,以像targ.EntireRow.Hidden等方式使用它。

盡管您可以像這樣調用范圍對象: Range("DETAILS!B6:B40")

在vba中,最好這樣稱呼它: Sheets("DETAILS").Range("B6:B40")

我修復了一些語法錯誤:

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim targ As Range
Dim msg As Range

Set targ = Sheets("DETAILS").Range("B6")
Set msg = Sheets("DETAILS").Range("B42")

msg.EntireRow.Hidden = True


With Sheets("DETAILS").Range("B6:B40")
        .EntireRow.Hidden = False
End With

For Each cell In Sheets("DETAILS").Range("B6:B40")
    Select Case cell.Value
        Case 0
            cell.EntireRow.Hidden = True
    End Select
Next cell



If targ.EntireRow.Hidden = True Then
    msg.EntireRow.Hidden = False
End If

Application.ScreenUpdating = True
End Sub

暫無
暫無

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

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