• ベストアンサー
  • 困ってます

Do While ステートメントエラー

  • 質問No.8794490
  • 閲覧数272
  • ありがとう数9
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 86% (93/107)

VBA初心者です。
VBAで作成したプログラムがエラーで止まってしまい、先に進まないのです。
わかる方いらっしゃいましたら、ご教示頂けないでしょうか。

<やりたいこと>
同じ形式の複数のエクセルBOOKに入っている特定の列の特定の行範囲にあるデータを、
別の集計用エクセルBOOKの単一のシートの中に順々にコピーをしていきたいのです。
集計用BOOKの特定の行には、データBOOKのBOOK名が横にずらっと記載されて
おり、集計用BOOKに組んだVBAでBOOK名を読み取り、そのBOOK名のデータBOOKを
開き、特定セル範囲(A2:A5)の値をコピーし、集計用BOOKのBOOK名が記載されて
いる列に貼り付けしていく。同様に、集計用BOOKの右どなりの列に記載されている
BOOK名を読み取り、そのBOOKを開き...と継続し、集計用BOOKにデータ用BOOK
名が記載されていない列まできたら、Do Whileステートメントを終了する、ということ
をやりたいのです。

<問題点>
実行させると、「実行時エラー'1004' 'Range'メソッドは失敗しました
:'Global'オブジェクト」なるメッセージが出て、先に進まないのです。

<プログラム>
Sub W()
Dim ファイル名 As String
Dim 列番号 As String
列番号 = c
Do While Range(列番号 & "5").Value <> ""
ファイル名 = Range(列番号 & "5").Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Range(列番号 & "6")
列番号 = 列番号 + 1
Loop
End Sub

<エラー発生部分>
Do While Range(列番号 & "5").Value <> ""

<補足>
ちなみに、VBAの組んであるBOOKは「学校」フォルダの中、データが入っている
BOOKは「データ」フォルダの中に格納されています。

以上お手数をおかけしますが、よろしくお願いいたします。

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 25% (45/175)

1回目のループ終了時の「列番号=列番号+1」結果は「D」になりますか?おそらくならないと思います。エラー発生時にデバッグを押した後、列番号のところにカーソルを合わせると値表示がされるので、確認出来ます。

これが原因ならば、以下のように対策すればOKです。

Sub W()
Dim ファイル名 As String
Dim 列番号 As Long
列番号 = 3
Do While Cells(5,列番号).Value <> ""
ファイル名 = Cells(5,列番号).Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Cells(6,列番号)
列番号 = 列番号 + 1
Loop
End Sub

要は列番号をアルファベットでなく整数に変更し、セル表現をRangeからCellsに変更します。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ