一回のループで次のオブジェクトの値も同時に取得するにはどのようなコードを書けばよいですか?
例えば、
ブックにシートが
Sheet1
Sheet2
Sheet3
あり、
Sub Sample1()
Dim s As Worksheet
For Each s In Worksheets
Debug.Print s.Name
Next
End Sub
のように、全てのシート名を取得する場合、
Sheet1とSheet2を1回のループで同時に取得する方法はありますか?
Sub Sample1()
Dim s As Worksheet
For Each s In Worksheets
Debug.Print s.Name
Debug.Print s+1.Name
Next
End Sub
みたいな方法があるのか知りたいです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
なるほど。
シート自体を取得する事が目的じゃないことは判りました。sub macro2()
dim i
for i = 1 to worksheets.count - 1
msgbox worksheets(i).range("A1")
msgbox worksheets(i + 1).range("A1")
next i
end sub
といった具合のことですね。
>ws.Selectの部分で実行時エラー
回答したマクロがそこまで進んだという事は、ご質問の直接の回答としての「2枚のシートを取得する」のは問題なくできていたということです。
たとえば非表示のシートがあってselectできないとかの、ご質問とは無関係な要因と推定します。
No.2
- 回答日時:
一緒に取得して何をしたいのかイマイチ想像もつきませんが、たとえば
sub macro1()
dim i as long
dim ws as variant
for i = 1 to worksheets.count - 1
set ws = worksheets(array(i, i + 1))
ws.select
msgbox "OK"
next i
end sub
といった具合で、wsに2枚のシートを取得するような事もできます。
>一緒に取得して何をしたいのかイマイチ想像もつきませんが、たとえば
次のシートの値も取得してifステートメントで判断したかったのです。
配列に入れて、次のインデックスを取得する方法なのですね。
しかし
せっかくご回答いただい多のですが、ws.Selectの部分で実行時エラー1004になってしまいました
No.1
- 回答日時:
こんにちは。
worksheet.Next プロパティを使います。
"最後のシート"には"次のシート"がありませんから
条件分岐や全体の設計についてよく考えておいた方が良いです。
とりあえず、Error制御と条件分岐と2例。
Sub Re8116272a()
Dim s As Worksheet
On Error Resume Next
For Each s In Worksheets
Debug.Print s.Name;
Debug.Print , s.Next.Name
Next
End Sub
または
Sub Re8116272c()
Dim s As Worksheet
For Each s In Worksheets
Debug.Print s.Name;
If s.Next Is Nothing Then
Debug.Print
Else
Debug.Print , s.Next.Name
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
【 Excel】シートの見出しに自...
-
EXCELのエラー
-
EXCELでマクロを使わずに図形の...
-
シートを保護した時でも並べ替...
-
エクセルを開いたとき常に同じ...
-
VBA シート名を先月の名前に...
-
マクロを複数シートに実行する...
-
左隣のシートをコピーして挿入
-
EXCELでワークシートを開いたら...
-
ExcelのSheetに作られたMacro1...
-
マクロ 各シートの決められた位...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルシートのセルに現在時...
-
VBAでユーザーに別ファイルのシ...
-
VBAで条件によってシート見出し...
-
複数シートの保護・解除
-
EXCELの起動時に常に同じ...
-
エクセルのマクロでMACアドレス...
-
エクセルでシートを消すマクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
Excelのマクロの呼び出し元を知...
-
EXCELでワークシートを開いたら...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセル2013でマクロのボタン...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
EXCELの起動時に常に同じ...
-
EXCELのエラー
-
メッセージボックスでシート名...
-
エクセルVBAでcmbBoxのプロパテ...
-
マクロ 各シートの決められた位...
-
エクセルで回数をカウントする...
おすすめ情報