[英]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
放在targ
和msg
之前,因為它們是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.