過去ログ

                                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

どのようにすれば、ブックごとに選択するシートの数が異なる場合でも
対処できるようになるのでしょう?
良い方法があったら教えてください。

よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 15:36  -------------------------------------------------------------------------
   意味が違ったらすいません。

  Sheets.Select

でしょうか?
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Y  ■日付 : 03/2/23(日) 19:00  -------------------------------------------------------------------------
   返信ありがとうございます。
すみません、説明不足でした。

ブック1にはシートが5枚、ブック2にはシートが7枚あったとします。
各々のブックのSheet(2)からSheet(4)を選択したい時のコードの
書き方が知りたいのです。

Sheets.Selectだとブックの全てのシートが選択されてしまうのですが・・
必要な複数シートを選択したいのです。

よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 19:11  -------------------------------------------------------------------------
   こんばんは。
左から2番目3番目4番目ということなら

  Sheets(Array(2, 3, 4)).Select
でしょうか?

違ったらすいません。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Y  ■日付 : 03/2/23(日) 19:30  -------------------------------------------------------------------------
   ▼Jカーター さん:
>こんばんは。
>左から2番目3番目4番目ということなら
>
>  Sheets(Array(2, 3, 4)).Select
>でしょうか?
>
>違ったらすいません。

こんばんは。
その通りなのですが、その2, 3, 4というインデックスを臨機応変な
数に変えられないかと思いまして・・
(例)ある時は2, 3, 4、そしてまたある時は2, 4, 6, 7といったように。

説明の仕方が分かりにくく、お手間を取らせてしまってすみませんが
よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 19:38  -------------------------------------------------------------------------
   こんばんは。
でしたら配列を文字に変換しないで、そのまま使用すればいいのでは。

Sub testJ1()
  Dim lngSHAR As Variant
  lngSHAR = Array(2, 3, 4)
  
  Sheets(lngSHAR).Select
End Sub

また意味が違ったらすいません。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 19:43  -------------------------------------------------------------------------
   しまった
配列の型と変数名の整合性がとれてない。
以下訂正です。
(動作に支障なしですが)

Sub testJ1()
  Dim vntSHAR As Variant
  vntSHAR = Array(2, 3, 4)
  
  Sheets(vntSHAR).Select
End Sub
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Y  ■日付 : 03/2/23(日) 20:06  -------------------------------------------------------------------------
   ▼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は文字列として認識されマクロが
動きません。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 20:25  -------------------------------------------------------------------------
   こんばんは。
ですから、文字にしないで配列のまま使用します。

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

違ったらすいません。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Jカーター  ■日付 : 03/2/23(日) 20:31  -------------------------------------------------------------------------
   追記
シートが2枚以下の場合はエラーになるので
可能性があれば分岐してください。
 ───────────────────────────────────────  ■題名 : Re:複数シートを同時選択 Sheets(Array(シート名....)).Select  ■名前 : Y  ■日付 : 03/2/23(日) 20:31  -------------------------------------------------------------------------
   出来ました!非常にしつこく的外れな質問ばかりしてしまったにもかかわらず、
大変迅速丁寧に答えてくださって本当にありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 782