Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8765 / 13644 ツリー ←次へ | 前へ→

【31310】シートの選択 hisao 05/11/17(木) 10:09 質問[未読]
【31311】Re:シートの選択 じゅん 05/11/17(木) 10:22 回答[未読]
【31312】Re:シートの選択 hisao 05/11/17(木) 10:42 質問[未読]
【31313】Re:シートの選択 Jaka 05/11/17(木) 10:54 発言[未読]
【31314】Re:シートの選択 hisao 05/11/17(木) 11:42 お礼[未読]
【31317】Re:シートの選択 Kein 05/11/17(木) 12:08 回答[未読]
【31325】Re:シートの選択 hisao 05/11/17(木) 14:55 お礼[未読]

【31310】シートの選択
質問  hisao E-MAIL  - 05/11/17(木) 10:09 -

引用なし
パスワード
   教えて下さい。
book1のsheet(4)から最終シートまでbook2にコピーしたいのですが
sheet(4)からsheet(n)まで一挙に選択する構文を教えて下さい。

【31311】Re:シートの選択
回答  じゅん  - 05/11/17(木) 10:22 -

引用なし
パスワード
   hasioさん、こんにちは。

Sheet(4)が4番目にあるものと過程して、

Public Sub subSheetCount()
  Dim i As Integer
  
  For i = 4 To Worksheets.Count
    'book2にコピーする処理
  Next i
End Sub

Worksheets.Countでブック内のシートの数を
数えてくれます。

【31312】Re:シートの選択
質問  hisao E-MAIL  - 05/11/17(木) 10:42 -

引用なし
パスワード
   ▼じゅん さん:
早速有り難う御座いました。
説明不足でした。
n=worksheets.countとして
book1とbook2はシートの構成が同一なので、まずbook2のsheets(4)からsheets(n)までを一度に選択して削除したいのです。その後 book1 の sheets(4)からshhets(n)迄これも一挙に選択してbook2 にコピーしたいのです。
(つまりバックアップファイルからのシートの入れ替えです)
for to を使えば良いのですが
処理速度を速めたいのと 1回1回削除警告を避けたいのです。
宜しくお願いします。

>hasioさん、こんにちは。
>
>Sheet(4)が4番目にあるものと過程して、
>
>Public Sub subSheetCount()
>  Dim i As Integer
>  
>  For i = 4 To Worksheets.Count
>    'book2にコピーする処理
>  Next i
>End Sub
>
>Worksheets.Countでブック内のシートの数を
>数えてくれます。

【31313】Re:シートの選択
発言  Jaka  - 05/11/17(木) 10:54 -

引用なし
パスワード
   シートのコピー複製はデータ量によって失敗したりするからやらないけど(97&2000以外は知らない)、単に選択すればいいのなら1例、

FLG = True
For i = 2 To 6
  Sheets(i).Select Replace:=FLG
  FLG = False
Next

【31314】Re:シートの選択
お礼  hisao E-MAIL  - 05/11/17(木) 11:42 -

引用なし
パスワード
   ▼Jaka さん:
有り難う御座いました。バッチリなんですけど jakaさんに
”シートのコピー複製はデータ量によって失敗したりするからやらないけど”
と言われると やはり ヤバイですかね。

>シートのコピー複製はデータ量によって失敗したりするからやらないけど(97&2000以外は知らない)、単に選択すればいいのなら1例、
>
>FLG = True
>For i = 2 To 6
>  Sheets(i).Select Replace:=FLG
>  FLG = False
>Next

【31317】Re:シートの選択
回答  Kein  - 05/11/17(木) 12:08 -

引用なし
パスワード
   シートの削除と丸ごとコピーをする代わりに

Sub Test()
  Dim Wb1 As Workboook, Wb2 As Workbook
  Dim i As Integer

  Set Wb1 = Workbooks("BookA.xls")
  Set Wb2 = Workbooks("BookB.xls")
  For i = 4 To Wb1.Workbooks.Count
   Wb2.Worksheets(i).Cells.Clear
   Wb1.Worksheets(i).Cells _
   .Copy Wb2.Worksheets(i).Range("A1")
  Next i
  Set Wb1 = Nothing: Set Wb2 = Nothing
End Sub

などとしても良いか、と思います。

 

【31325】Re:シートの選択
お礼  hisao E-MAIL  - 05/11/17(木) 14:55 -

引用なし
パスワード
   ▼Kein さん:
有り難う御座いました

>シートの削除と丸ごとコピーをする代わりに
>
>Sub Test()
>  Dim Wb1 As Workboook, Wb2 As Workbook
>  Dim i As Integer
>
>  Set Wb1 = Workbooks("BookA.xls")
>  Set Wb2 = Workbooks("BookB.xls")
>  For i = 4 To Wb1.Workbooks.Count
>   Wb2.Worksheets(i).Cells.Clear
>   Wb1.Worksheets(i).Cells _
>   .Copy Wb2.Worksheets(i).Range("A1")
>  Next i
>  Set Wb1 = Nothing: Set Wb2 = Nothing
>End Sub
>
>などとしても良いか、と思います。
>
>

8765 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free