- ベストアンサー
作業グループで空白行の非表示マクロ
1~40までのシート全てのB7:B36の範囲に空白があれば非表示にするというマクロを作ろうとしています。 Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _ "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", _ "39", "40")).Select Replace:=False Dim rw As Integer Application.ScreenUpdating = False For rw = 7 To 36 If Range("B" & rw) = "" Then Rows(rw).EntireRow.Hidden = True End If Next Application.ScreenUpdating = True というマクロだと、1のシートしか適用しませんでした。1~40のすべてにこのマクロを適用させるにはどうすればいいのでしょうか。教えて下さい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Dim rw, i As Integer Application.ScreenUpdating = False For i = 1 To 40 Sheets("" & i).Select For rw = 7 To 36 If Range("B" & rw) = "" Then Rows(rw).EntireRow.Hidden = True End If Next Next Application.ScreenUpdating = True といった意味でした。
その他の回答 (4)
- wolis
- ベストアンサー率45% (14/31)
たびたび訂正ですいません。 シートの選択方法間違えてました。 For i = 1 To 40 Sheets("" & i).Select : : next
補足
ちなみにどこに入れたらよいでしょうか?
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim sh For Each sh In Worksheets MsgBox sh.Name '処理 Next End Sub これを標準モジュールに入れて、全シート(名)が捉えられることを まず納得する。その後処理の部分に1シート分の処理を入れる。 且つ今選ばれているシートに特定するために、セルを扱っている部分(Range()や Cells()など)には、Sh. を先頭に添える。 処理しないシートが1つ2つの例外なら、シート名が除外分かどうか IF分で聞いて、処理を飛ばせばよい。 ーー 繰り返しを(For rw = 7 To 36以下) をやっているようだが、CountやCountAやCountBlank関数(WorksheetFunction)ガ使えないか考えてみたらどうですか。 >全てのB7:B36の範囲に空白があれば B7:B36の範囲がすべて空白であれば B7:B36の範囲に1つでも空白があれば B7:B36の範囲で当該行B列セルが空白であれば 3通りに取れないこともないとおもう。はっきり書くこと。
お礼
分かりにくい質問ですみません。ご指導ありがとうございました。解決しました。
- wolis
- ベストアンサー率45% (14/31)
すいません For i = 1 To 3 ではなく For i = 1 To 40 でした
補足
変数が定義されていませんとでてしまいました。どうすればよいでしょうか?
- wolis
- ベストアンサー率45% (14/31)
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _ "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", _ "39", "40")).Select Replace:=False でシート選択されるのではなく、 For i = 1 To 3 Sheets(i).Select : : next で処理されればいかがでしょうか?
お礼
無事解決しました。ありがとうございました!