Page 782 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼複数シートを同時選択 Sheets(Array(シート名....)).Select Y 03/2/23(日) 13:40 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 15:36 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Y 03/2/23(日) 19:00 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 19:11 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Y 03/2/23(日) 19:30 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 19:38 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 19:43 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Y 03/2/23(日) 20:06 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 20:25 ┣Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Jカーター 03/2/23(日) 20:31 ┗Re:複数シートを同時選択 Sheets(Array(シート名....)).Select Y 03/2/23(日) 20:31 ─────────────────────────────────────── ■題名 : 複数シートを同時選択 Sheets(Array(シート名....)).Select ■名前 : Y ■日付 : 03/2/23(日) 13:40 -------------------------------------------------------------------------
こんにちは。 マクロで複数のシートを同時に選択(作業グループ)して作業を 行いたいので、 Sheets(Array("Sheet1","Sheet2","Sheet3"....)).Select と書いていたのですが、ブックによってシートの数が変わる場合、 Arrayの以降に指定する引数(シート名)の数も変えないといけないので、 引数をsheetArrayという変数にして、ブックの選択したい複数のシート名を sheetnames()という配列にしてjoinしたものをsheetArrayに代入してみたのです が、上手くいきませんでした。 sheetArray = Join(sheetnames) Sheets(Array(sheetArray)).Select どのようにすれば、ブックごとに選択するシートの数が異なる場合でも 対処できるようになるのでしょう? 良い方法があったら教えてください。 よろしくお願いいたします。 |
意味が違ったらすいません。 Sheets.Select でしょうか? |
返信ありがとうございます。 すみません、説明不足でした。 ブック1にはシートが5枚、ブック2にはシートが7枚あったとします。 各々のブックのSheet(2)からSheet(4)を選択したい時のコードの 書き方が知りたいのです。 Sheets.Selectだとブックの全てのシートが選択されてしまうのですが・・ 必要な複数シートを選択したいのです。 よろしくお願いいたします。 |
こんばんは。 左から2番目3番目4番目ということなら Sheets(Array(2, 3, 4)).Select でしょうか? 違ったらすいません。 |
▼Jカーター さん: >こんばんは。 >左から2番目3番目4番目ということなら > > Sheets(Array(2, 3, 4)).Select >でしょうか? > >違ったらすいません。 こんばんは。 その通りなのですが、その2, 3, 4というインデックスを臨機応変な 数に変えられないかと思いまして・・ (例)ある時は2, 3, 4、そしてまたある時は2, 4, 6, 7といったように。 説明の仕方が分かりにくく、お手間を取らせてしまってすみませんが よろしくお願いいたします。 |
こんばんは。 でしたら配列を文字に変換しないで、そのまま使用すればいいのでは。 Sub testJ1() Dim lngSHAR As Variant lngSHAR = Array(2, 3, 4) Sheets(lngSHAR).Select End Sub また意味が違ったらすいません。 |
しまった 配列の型と変数名の整合性がとれてない。 以下訂正です。 (動作に支障なしですが) Sub testJ1() Dim vntSHAR As Variant vntSHAR = Array(2, 3, 4) Sheets(vntSHAR).Select End Sub |
▼Jカーター さん: >しまった >配列の型と変数名の整合性がとれてない。 >以下訂正です。 >(動作に支障なしですが) > >Sub testJ1() > Dim vntSHAR As Variant > vntSHAR = Array(2, 3, 4) > > Sheets(vntSHAR).Select >End Sub しつこくてすみません・・ 配列(2, 3, 4)を変数にすることはできないでしょうか? Dim ShtNo as Integer, vntSHAR As Variant ShtNo = Workbooks("Book.xls").Sheets.Count For Cnt = 2 to (ShtNo - 1) 'シート2から、存在する最後から2番目のシート vntSHAR = vntSHAR & Cnt If Cnt <> ShtNo - 1 Then vntSHAR = vntSHAR & "," End If Next vntSHAR = "Array(" & vntSHAR & ")" Sheets(vntSHAR).Select とやりたいのですが、vntSHARは文字列として認識されマクロが 動きません。 |
こんばんは。 ですから、文字にしないで配列のまま使用します。 Sub testJ2() Dim ShtNo As Long, lngSHAR() As Long Dim Cnt As Long ShtNo = Workbooks("Book.xls").Sheets.Count - 2 ReDim lngSHAR(1 To ShtNo) For Cnt = 1 To (ShtNo) lngSHAR(Cnt) = Cnt + 1 Next Sheets(lngSHAR).Select End Sub 違ったらすいません。 |
追記 シートが2枚以下の場合はエラーになるので 可能性があれば分岐してください。 |
出来ました!非常にしつこく的外れな質問ばかりしてしまったにもかかわらず、 大変迅速丁寧に答えてくださって本当にありがとうございました。 |