• ベストアンサー

「 このコード 」 のチェック を お願い致します。

下記コードは何とか動作しますが、チェックお願い致します。 1、 MsgBox "「 空白シート 」 は ありません。"    の    追加編集が、よくわかりません。 2、 1以外に、おかしな箇所をご教示お願い致します。 --------------------------- '「 ブック1 」 に空白シートがあったら、そこへ貼り付ける Sub 空白シートへコピー() Dim ws As Worksheet For Each ws In Workbooks("ブック1.xls").Sheets If IsEmpty(ws.UsedRange) = True Then Workbooks("ブック2.xls").Activate Cells.Select Selection.Copy Workbooks("ブック1.xls").Activate ws.Select Range("A1").Select ActiveSheet.Paste Else MsgBox "「 空白シート 」 は ありません。" End If Next End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 私も作ってみました。私なら、だいたいは、こんな風です。 シートが空か調べるのは、通常は、WorksheetFunction.Count を使ったほうが速いです。 ただ、ワークシート関数を使うことをためらうときもありますが。 参考にしてみてください。 本来は、 Workbooks("ブック2.xls").Activate や 以下のWorkbooks("ブック2.xls").ActiveSheet  は、明示的に、シートを指定したほうがよいです。 Sub 空白シートへコピー3()  Dim wsh As Worksheet  Dim wsh2 As Worksheet  Dim flg As Boolean    Set wsh2 = Workbooks("ブック2.xls").ActiveSheet  For Each wsh In Workbooks("ブック1.xls").Worksheets   If WorksheetFunction.Count(wsh.Cells) = 0 Then     wsh2.Cells.Copy wsh.Range("A1")     flg = True   End If  Next wsh    If flg = False Then    MsgBox "「 空白シート 」 は ありません。"  End If  Set wsh2 = Nothing End Sub

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございます。 確かに、早いです。 シート指定を忘れてました。 「Select」の使用が、まだ時間がかかるようでございます。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

元のソースを生かすとして、以下ではどうですか。 「空シート有無」の判定はFor Each~Next文の外に無ければいけません Sub 空白シートへコピー() Dim ws As Worksheet Dim psw As Boolean For Each ws In Workbooks("BOOK1.xls").Sheets  If IsEmpty(ws.UsedRange) Then   Workbooks("BOOK2.xls").Activate   Cells.Copy   Workbooks("BOOK1.xls").Activate   ws.Select   Range("A1").Select   ActiveSheet.Paste   psw = True   Exit For  End If Next If psw = False Then  MsgBox "「 空白シート 」 は ありません。" End If End Sub でもこのような空きシートを探すロジックが必要ですか? BOOK1にシートを追加してコピーするか、BOOK2のシートをBOOK1に直接コピーするのが現実的なロジックではないでしょうか

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございます。 >元のソースを生かすとして、 わざわざ、このようにして頂いたおかげで、No.2様との違いがとても体感できました。 >でもこのような空きシートを探すロジックが必要ですか? ちょくちょくと、このようなシートが存在することがありました為でございます。

関連するQ&A