Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25 / 13315 ツリー ←次へ | 前へ→

【80835】複数のシートに同じ処理をしたい sakana 19/5/22(水) 22:24 質問[未読]
【80836】Re:複数のシートに同じ処理をしたい マナ 19/5/22(水) 23:02 発言[未読]
【80837】Re:複数のシートに同じ処理をしたい γ 19/5/22(水) 23:24 発言[未読]

【80835】複数のシートに同じ処理をしたい
質問  sakana  - 19/5/22(水) 22:24 -

引用なし
パスワード
   超初心者です。

選択した範囲の行が空欄だった場合、非表示にするというコードがうまくいったのですが、複数シートに同じ処理をする方法がわかりません。

Sub Sample2()
Dim Rng As Range
Worksheets("sheet1").Select

For Each Rng In Range("B2:E20").Rows
If WorksheetFunction.CountA(Rng) = 0 Then Rng.EntireRow.Hidden = True
 Next Rng
end sub

上のコードをどう書き換えたらいいのでしょうか?
よろしくお願いします

【80836】Re:複数のシートに同じ処理をしたい
発言  マナ  - 19/5/22(水) 23:02 -

引用なし
パスワード
   ▼sakana さん:

すべてのシートに繰り返し処理する場合は、

Sub test()
  Dim ws As Worksheet
  
  For Each ws In Worksheets
    MsgBox ws.Range("B2").Value
  Next
  
End Sub

【80837】Re:複数のシートに同じ処理をしたい
発言  γ  - 19/5/22(水) 23:24 -

引用なし
パスワード
   既にポイントをついた回答を頂いています。
以下、蛇足です。

例です。
Sub Sample2()
  Dim k  As Long
  Dim ws As Worksheet
  Dim rng As Range
  
  '左から1番目から3番目のシートを繰り返す
  For k = 1 To 3
    Set ws = Worksheets(k)
    For Each rng In ws.Range("B2:E20").Rows
      If WorksheetFunction.CountA(rng) = 0 Then rng.EntireRow.Hidden = True
    Next rng
  Next
End Sub

Sub Sample3()
  Dim s As Variant
  Dim ws As Worksheet
  Dim rng As Range
  Dim k As Long
  
  'シート名を列挙する方式
  For Each s In Array("Sheet1", "Sheet2")
    Set ws = Worksheets(s)
    For Each rng In ws.Range("B2:E20").Rows
      If WorksheetFunction.CountA(rng) = 0 Then rng.EntireRow.Hidden = True
    Next rng
  Next
End Sub

25 / 13315 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free