2016-10-05 4 views
0

列A〜Fのシートがあります。すべての行を実行するプログラムを探しています(アクティブ行のみを実行する方法はありますか? )、D1 & E1 & F1が空白の場合は、行を非表示にします(など)。3つのセルが空白の場合、Excelの行を非表示にします。

Sub Celltest2() 

Dim rw As Range, cel As Range 
Dim i As Integer 
Dim celset As Range 
Dim LastRow As Long 


With Sheets("Phonelist") 
    ' find last row with data in Columns "D, "E" and "F" >> modify to your needs 
    LastRow = WorksheetFunction.Max(.Cells(.Rows.Count, "D").End(xlUp).Row, _ 
            .Cells(.Rows.Count, "E").End(xlUp).Row, _ 
            .Cells(.Rows.Count, "F").End(xlUp).Row) 

    For Each rw In .Range("D2:F" & LastRow).Rows 
     If WorksheetFunction.CountA(Range("D" & rw.Row & ":F" & rw.Row)) = 0 Then 
      rw.EntireRow.Hidden = True 
     End If 
    Next rw 
End With 

End Sub 

はオプション2:あなたは上記のループを置き換えることができます。ここ

は、私は本当にあまりにもうまく動作しない持っているものだ....

Sub Celltest2() 
Dim rw As Range, cel As Range 
Dim i As Integer 
Dim celset As Range 

For Each rw In Sheets("Phonelist").Range("D2:F5000").Rows 
    For Each cel In rw.Cells 
      If Len(cel.Text) = 0 Then 
      cel.EntireRow.Hidden = True 

      End If 
    Next 
Next 
End Sub 
+0

Whあまりうまく動かないのですか? –

答えて

1

は、以下のコードを試してみてください(For Each rw In .Range("D2:F" & LastRow).Rowsで始まるもの)を次のループで返します。

For i = 2 To LastRow 
    If WorksheetFunction.CountA(Range("D" & i & ":P" & i)) = 0 Then 
     Rows(i).EntireRow.Hidden = True 
    End If 
Next i 
関連する問題