
我已經能夠使用以下程式碼建立複選框來顯示/隱藏 Excel 文件中的特定行
If CheckBox1.Value = True Then Rows("26:28").EntireRow.Hidden = False If CheckBox1.Value = False Then Rows("26:28").EntireRow.Hidden = True
但是,當我插入高於此範圍的行時,我需要能夠更新範圍。
試圖找到範圍開始的儲存格,然後將 2 新增至範圍,但不太確定如何執行此操作。
乾杯
羅伯特
答案1
答案2
我假設您有一個工作代碼來顯示/隱藏這些行,並且您的問題只是在上面插入行後找到該行。
如果您只有一個要顯示/隱藏的範圍,則可以使用命名範圍。當上面有新行時,命名範圍仍將指向相同的行。
ToBeHidden
只需為幾個儲存格命名(例如A26:A28
,不需要命名整行),然後使用以下程式碼來切換它們:
With ActiveSheet.Range("ToBeHidden").EntireRow
If .Hidden = True Then
.Hidden = False
Else
.Hidden = True
End If
End With
使用一組線進行切換很容易,但如果有很多線,則需要更強大的東西。也許添加一個專用列來啟動此功能。
答案3
由於OP的目標是“檢測是否插入了行以及插入了多少行”,您可以在上面Máté Juhász的評論中找到這一點,因此,解決方案應該跟踪插入或刪除的行的隱藏數據範圍。
首先,命名隱藏範圍A26:A28
並使用以下 VBA 程式碼來追蹤插入或刪除的行數。
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("Named Range").RefersToRange
If lngRow = 0 Then
lngRow = rng1.Row
Exit Sub
End If
If rng1.Row = lngRow Then Exit Sub
If rng1.Row < lngRow Then
MsgBox lngRow - rng1.Row & " Row Deleted"
Else
MsgBox rng1.Row - lngRow & " Rows Inserted"
End If
lngRow = rng1.Row
End Sub
注意:如果您只想計算插入的行數,請將最後一個變更If...
為
If rng1.Row > lngRow Then
MsgBox rng1.Row - lngRow & " Rows Inserted"
End If