![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
初心者です。以下のマクロを組みました。
これを複数シートに適用するにはどうしたらよいのでしょうか?
worksheets selectではうまくいきませんでした><
具体的には1~80までのシートが数字で分けられており、
「目次」と「新規」以外の全てに適用したいです。
Sub Macro3()
Dim sl As String
Dim mySht As Worksheet
sl = Range("A65536").End(xlUp).Address
Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
For Each mySht In Worksheets
Next
End Sub
No.4ベストアンサー
- 回答日時:
元のコードを直してみました。
'-------------------------------------------
Sub Macro3r()
Dim sl As Range
Dim mySht As Worksheet
For Each mySht In Worksheets
With mySht
If .Name <> "目次" And .Name <> "新規" Then
Set sl = .Range("A65536").End(xlUp)
.Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
End With
Next
End Sub
'-------------------------------------------
''以下は、私の書き方です。
''標準モジュール
'-------------------------------------------
Sub Test1()
Dim mySht As Worksheet
Dim r As Range
Const bOPN As Boolean = True 'True=隠す, False=戻す
For Each sh In ActiveWorkbook.Worksheets
With sh
If Not (.Name Like "目次" Or .Name Like "新規") Then
On Error Resume Next 'ブランクセルを探すためには、これが必要
Set r = .Range("B1", .Cells(Rows.Count, 1).End(xlUp)) _
.SpecialCells(xlCellTypeBlanks)
If Not r Is Nothing Then
r.EntireRow.Hidden = bOPN
End If
On Error GoTo 0
End If
End With
Next
End Sub
'=========================================
Name やCell, Rangeプロパティの前には、すべて、「.(カンマ)」が入って、With ステートメントで、親オブジェクトを指定しています。
このように、SpecialCells(xlCellTypeBlanks)は、Blank がない場合を想定しなければなりませんが、Blankがない場合は、「実行時エラー」が発生します。それに、On Error Resume Next が必要になります。
また、最後に、r オブジェクトの開放はしていませんが、この程度は、あまり気にしなくて良いです。
なお、本来のコードのB1 ~A列の最後までというのは、少しヘンですね。
B列なら、
Set r = .Range("B1", .Cells(Rows.Count, 1).End(xlUp).Offset(, 1)) _
このようになります。
Rangeの引数は、"B1"の文字列でよいですが、もうひとつの範囲の引数は、オブジェクトで構いません。
No.3
- 回答日時:
再掲:
>「どのシートの」セルを使っているのか,マクロの隅々まで良く目を光らせて
>間違えないよう気を付けます。
この書きぶりは間違いです:
>Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
↑ ↑ ↑
最初のrange,中に書いた"B1",そしてslと3箇所,明示的にシートを指定していないのでアクティブシートだけを対象に(シートの枚数の回数を)ぐるぐると同じ事を繰り返しています。
しかも特に「("B1", sl)」と書いた部分は,省略した書き方を変な風に憶えて使っているので,ますます間違いに気づきにくくなっています。
解決策は回答したとおりですが,
>これにすると隠れて欲しくないところまで隠れてしまいました
どのような不都合があったのか,問題点を具体的なエクセルの姿としてはっきり教えてください。
また,回答されたマクロの文言をコピーして問い返すのではなく, 必 ず あなたが実際に動かして失敗したマクロをコピーして改めて掲示し,写し間違いや読み取り間違いで余計なミスを抱えていないかもチェックしてもらうよう気を付けるようなさってください。
No.2
- 回答日時:
>s.range("B1:B" & s.range("A65536").end(xlup).row).entirerow.hidden = true
>これにすると隠れて欲しくないところまで隠れてしまいました>
質問ではB1からA列の最終行までだったのでは
>sl = Range("A65536").End(xlUp).Address
>Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
>s.range("B1:B" & s.range("A65536").end(xlup).row).entirerow.hidden = true
↓
s.Range("B1", s.Range("A65536").End(xlUp)).EntireRow.Hidden = True
この回答への補足
ありがとうございます。
言葉が足りずすみません><
B列にある空白行を隠すという設定にしたいので
sl = Range("A65536").End(xlUp).Address
Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
これは合っているようです。。
ですが、一つのシートにしか適用されず困っております><
No.1
- 回答日時:
sub macro3r1()
dim s as worksheet
for each s in worksheets
if s.name <> "目次" and s.name <> "新規" then
s.range("B1:B" & s.range("A65536").end(xlup).row).entirerow.hidden = true
end if
next
end sub
みたいな。
#「どのシートの」セルを使っているのか,マクロの隅々まで良く目を光らせて間違えないよう気を付けます。
この回答への補足
ありがとうございます。
以下のようにしたのですが、一つのシートにしか適用されませんでした><どこが悪いのでしょうか?
Dim sl As String
For Each s In Worksheets
If s.Name <> "目次" And s.Name <> "新規" Then
sl = Range("A65536").End(xlUp).Address
Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
Next
End Sub
あと、
s.range("B1:B" & s.range("A65536").end(xlup).row).entirerow.hidden = true
これにすると隠れて欲しくないところまで隠れてしまいました><
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力データをマクロで消去した...
-
VBAアクティブセル行で列範囲選択
-
エクセルVBAでセルに入力したパ...
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
エクセルのマクロ機能で前のシ...
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
excelに貼り付けた数値が勝手に...
-
Excel VBA のdebug(F8キー) が...
-
スクロールしてもボタンを常に...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
エラーになってないのにVBA...
-
ワードからエクセルへ貼り付け...
-
Accessのコマンドボタンの立体...
-
エクセルのコマンドボタンの位...
-
Accessユーザーフォームでコマ...
-
コマンドボタンで「終了ボタン...
-
Excelマクロでオプションボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBScriptでExcel(2019)上のデー...
-
入力データをマクロで消去した...
-
VBAアクティブセル行で列範囲選択
-
python fbprophetについて
-
ローマ字→カタカナへ変換(エク...
-
エクセルVBAでセルに入力したパ...
-
マクロ 実行ボタンを押さずに...
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
excelに貼り付けた数値が勝手に...
-
Excel VBA のdebug(F8キー) が...
-
Excelを開いた時に表示さ...
-
スクロールしてもボタンを常に...
-
EXCELのセルへ、デジタル時計を...
-
押したボタンの位置取得(共通の...
-
エラーになってないのにVBA...
-
エクセル グラフの軸の最小値最...
-
エクセルのマクロ機能で前のシ...
-
ワードからエクセルへ貼り付け...
-
複数ファイルにある特定のシー...
おすすめ情報