1

Sheet1が列AおよびBの特定のリストされた名前の複数の列(列CからT)で期日を編集できるように設定されたワークブックがあります。行1と2はヘッダーであるため、データ入力は行3から始まります。

Sheet2は、期限が迫っている場合に特定のセルを赤または黄色で強調表示する条件付き書式の保護されたページとしてINDIRECT数式を使用した場合と同じです。

私はVBAに不慣れで、次の基準を満たすマクロを探しています。

Sheet2の場合のみ、行に赤または黄色のセルが含まれていない場合は、色の付いていない行を非表示にします。

どんな助けでも大歓迎です。単一列の基準に基づいて行を非表示にするコードしか見つかりませんでした。

4

2 に答える 2

4

これがあなたが始めるための小さなスクリプトです。各行の各列をループし、各セルの色をチェックします。色が見つかった場合、その行はスキップされます。色の付いたセルが見つからない場合、行は非表示になります。つまり、完全に白い行はすべて非表示になります

コード:

Public Sub HideUncoloredRows()
    Dim startColumn As Integer
    Dim startRow As Integer

    Dim totalRows As Integer
    Dim totalColumns As Integer

    Dim currentColumn As Integer
    Dim currentRow As Integer

    Dim shouldHideRow As Integer

    startColumn = 1     'column A
    startRow = 1        'row 1
    totalRows = Sheet2.Cells(Rows.Count, startColumn).End(xlUp).Row

    For currentRow = totalRows To startRow Step -1
        shouldHideRow = True
        totalColumns = Sheet2.Cells(currentRow, Columns.Count).End(xlToLeft).Column
        'for each column in the current row, check the cell color
        For currentColumn = startColumn To totalColumns
            'if any colored cell is found, don't hide the row and move on to next row
            If Not Sheet2.Cells(currentRow, currentColumn).Interior.ColorIndex = -4142 Then
                shouldHideRow = False
                Exit For
            End If
        Next

        If shouldHideRow Then
            'drop into here if all cells in a row were white
            Sheet2.Cells(currentRow, currentColumn).EntireRow.Hidden = True
        End If
    Next
End Sub

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2013-03-27T13:14:46.480 に答える
0
row = 1    
do
  flag = false
  col = 1
  do
    .cells(row,col).select
    if selection.interior.colorindex <> vbWhite then flag = true
  loop until (col = lastcol) or (flag = true)
  if flag then 
    rows(row).delete
    row = row - 1
  end if
  row = row + 1
loop until row = lastrow
于 2013-03-27T10:10:58.780 に答える