1

以下に2つのコードがあります。1つは非表示にし、もう1つはゼロに等しい値の合計に基づいて行を再表示します。ただし、このコードは、セクション間のスペーサーであるため、不要な空白行も非表示にします。アドバイスをいただければ幸いです。既存のコードを改善するための推奨事項があれば、それもありがたいです。

Sub HideRows()

Dim R As Long
Dim Rng As Range

    If Selection.Rows.Count > 1 Then
        Set Rng = Selection
    Else
        Set Rng = ActiveSheet.UsedRange
    End If

    For R = 1 To Rng.Rows.Count
        If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then
        Rng.Rows(R).Hidden = True
        End If
    Next R

End Sub
Sub UnHideRows()

Dim R As Long
Dim Rng As Range

    If Selection.Rows.Count > 1 Then
        Set Rng = Selection
    Else
        Set Rng = ActiveSheet.UsedRange
    End If

    For R = 1 To Rng.Rows.Count
        If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then
        Rng.Rows(R).Hidden = False
        End If
    Next R

End Sub
4

1 に答える 1

4

各メソッドのFORループをこれに置き換えます...。

myRange = Range(Rng(R, 3), Rng(R, Rng.Columns.Count))
For R = 1 To Rng.Rows.Count
  If Application.CountBlank(myRange) <> myRange.Cells.Count Then
    If Application.Sum(myRange) = 0# Then
      Rng.Rows(R).Hidden = True
    End If
Next R

最初に、その行範囲内のすべてのセルが空白であるかどうかを確認し、trueの場合は基本的にそれ以上の処理をスキップします。

于 2011-12-22T22:03:41.433 に答える