
たとえばSheet1とSheet2を一度に選択する場合、
Sub Macro6()
Sheets(Array("Sheet1", "Sheet2")).Select
End Sub
と書くと思います。
ワークシートを変数で書く場合は
Sub test()
Dim ws1 As Worksheet, ws2 As Worksheet
Sheets(Array(ws1.Name, ws2.Name)).Select
End Sub
と、いちいち名前で指定しなければならないのでしょうか?
それとももっと別の書き方があるのでしょうか?
No.5ベストアンサー
- 回答日時:
> この場合、仮にシート1つだけなら
> ws(1).Move
> で大丈夫ですよね?ところが複数になると
> Sheets(Array(ws(1).Name, ws(2).Name)).Move と、わざわざNameで名前を指定するしかないんでしょうか?
この辺はわたしも詳しくないのですが、ws(1)やws(2)はオブジェクト型変数ですから、Array関数ではまとめられないのではないでしょうか?
どうしてもオブジェクト変数のまま使用したいのなら
ws(1).Select
ws(2).Select False
ActiveWindow.SelectedSheets.Move となると思います。
ならば
Sheets(Array(ws(1).Name, ws(2).Name)).Move の方がよほど簡単ですよね。
> ならば
> Sheets(Array(ws(1).Name, ws(2).Name)).Move の方がよほど簡単ですよね。
たしかにそのとおりでしたね。
ありがとうございます。
No.4
- 回答日時:
No.3です!
コードを見させていただきました。
Sheet1・Sheet2のSheet名が同じ、またはあるきまったセルの値をSheet名にするのであれば
Sheet名を指定せずにできそうな感じですが、
コードを拝見する限りにおいては
Sheet1を「回答」というSheet名に!
Sheet2を「詳細」というSheet名にするにあたり、規則性がないようなので
はやりそれぞれのSheet名を指定するのが間違いないような気がします。
この程度しか判りませんが、Sheet名を指定せずにできる方法があればごめんなさいね。m(_ _)m
No.3
- 回答日時:
こんばんは!
的外れならごめんなさい。
Sheet1とSheet2を選択した後、何かの操作をする訳ですよね?
考え方として、両Sheetを一気に!というのではなく、Sheet1の操作が終わればSheet2の操作に!という方法にすればどうでしょうか?
仮にSheet1・Sheet2のA1セルにABCDと表示するコードは↓のような感じで大丈夫だと思います。
Sub test()
Dim i As Long
For i = 1 To 2
Worksheets(i).Cells(1, 1) = "ABCD"
Next i
End Sub
※ この場合Sheet名は一切関係なく、Sheet見出しの左側から1番目・2番目のSheetのA1セルに
ABCDと表示されるはずです。
参考にならなかったら読み流してくださいね。m(_ _)m
ありがとうございます。
実は、だいぶ略しましたが以下のようなことをしております。
Sub ファイル作成()
Dim ws(2) As Worksheet
Dim myPth As String, dp As String
Static myS As Long
myS = myS + 1
myPth = ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "(" & Format(myS, "00") & ")"
MkDir myPth
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Set ws(0) = Sheets("Sheet2")
Set ws(1) = Sheets(Sheets.Count)
Set ws(2) = Sheets.Add(After:=Sheets(Sheets.Count))
With ws(2)
'略
.Range("AF2").Value = ws(0).Range("B1").Value
dp = .Range("AF2").Value
End With
With ws(1)
'略
.Range("A1").Value = dp
End With
MsgBox dp & "を作成しました。"
Sheets(Array(ws(1).Name, ws(2).Name)).Move
Sheets(1).Name = "回答"
Sheets(2).Name = "詳細"
ActiveWorkbook.SaveAs Filename:=myPth & "\" & dp & ".xls"
ActiveWindow.Close
End Sub
この場合、仮にシート1つだけなら
ws(1).Move
で大丈夫ですよね?ところが複数になると
Sheets(Array(ws(1).Name, ws(2).Name)).Move
と、わざわざNameで名前を指定するしかないんでしょうか?
No.2
- 回答日時:
記述方法は様々だと思いますが、他の方法では
インデックス番号で指定する方法
Sheets(Array(ws1.Index, ws2.Index)).Select
すべて選択したいなら、
Sheets.Select
こんな方法もあります。
ws1.Select
ws2.Select False
>と、いちいち名前で指定しなければならないのでしょうか?
すべて選択する場合以外では、いちいち名前で指定するのが普通です。
> すべて選択する場合以外では、いちいち名前で指定するのが普通です。
そうなんですか・・・・・・。
せっかくws1,ws2とオブジェクトで変数を指定したのに、わざわざその名前を取得しなければならないことに違和感がありました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAで、指定したシートに対して同じ処理を行いたい
Excel(エクセル)
-
マクロを特定の複数シートで実行する方法
Excel(エクセル)
-
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
6
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
7
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
8
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
9
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
10
【エクセルマクロ】複数シートで同じマクロを実行
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セックスする度に胸が大きくな...
-
セックスしてる時に気持ちいい...
-
週1ペースで会うカップルでデー...
-
僕の心が狭いのでしょうか…?セ...
-
恋人とセフレの違いはなんです...
-
アナルファックと普通のセック...
-
オナ禁中はセックスしてもいい...
-
彼女が噛んできます。 歯型がつ...
-
胸が揺れるくらい激しいセック...
-
未成年同士でラブホに行った際...
-
おじさんになってから若い女性に
-
母子相姦経験者ですが、日本で...
-
謎
-
高校生の性行為
-
セックス前
-
セックスについて。 彼が正常位...
-
セックスする時なぜ声出るの
-
男性が家に上がるのを断る理由
-
付き合って1ヶ月でヤった後別れ...
-
貞操観念の低い女性について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セックスする度に胸が大きくな...
-
週1ペースで会うカップルでデー...
-
セックスしてる時に気持ちいい...
-
恋人とセフレの違いはなんです...
-
アナルファックと普通のセック...
-
僕の心が狭いのでしょうか…?セ...
-
おじさんになってから若い女性に
-
胸が揺れるくらい激しいセック...
-
オナ禁中はセックスしてもいい...
-
セックスする時なぜ声出るの
-
セックスについて。 彼が正常位...
-
未成年同士でラブホに行った際...
-
母子相姦経験者ですが、日本で...
-
付き合って1ヶ月でヤった後別れ...
-
初めて泊まりにきてくれる彼女...
-
彼女が噛んできます。 歯型がつ...
-
30代前半男性の性欲
-
彼女とのセックスに新鮮味を感...
-
セックス前
-
セックスする時って会話します...
おすすめ情報