• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:当方初心者で、エクセルVBAにつきまして、デバックに対してどのように対)

初心者のためのエクセルVBAデバックの対応方法

このQ&Aのポイント
  • 初心者である方がエクセルVBAのデバックに悩んでいる場合、以下の対応方法があります。
  • まず、エラーメッセージを確認し、エラーコードを調べることが重要です。
  • 次に、デバック箇所のコードを詳しく分析し、誤っている部分を見つけましょう。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

エラーの原因は、X<>0(等しくない)とき、 変数Bの値ががシートの最終行を超えるからです。 例えば、 セルA1:50 セルC1:スペース(未入力) この時、変数Bだけが+1され続け、 シートの最終行(xl2000~2003では、65536)を超えてしまう。 ★Cells(B, 1).Value ー> Cells(65537, 1).Value デバッグ状態でエラー行のBにマウスポインターを持っていけば その時点のBの値が確認できます。 それから、他にもおかしいところがあります。 実際のデータと照らし合わせながら1行ずつ追ってみるとわかります。 で、慣れたらもっと簡単な方法がありますが、初心者ということなので C列の値があるセルを1行目から最終行までひとつずつ A列1行目からA列最終行の値と比較していくといいでしょう。 最終行とは値の入力されてる最終の行のことです。 A列最終行は、Cells(Rows.Count,3).End(xlup).Row C列最終行は、Cells(Rows.Count,1).End(xlup).Row '------------------------------------- Sub test()  Dim A As Long  Dim C As Long  For C = 1 To Cells(Rows.Count, 3).Row    If Cells(C, 3).Value <> "" Then      For A = 1 To Cells(Rows.Count, 1).Row        If Cells(C, 3).Value = Cells(A, 1).Value Then          Cells(C, 4).Value = Cells(A, 2).Value          Exit For        End If      Next A    End If  Next C End Sub '-------------------------------------- 以上です。  

guren314
質問者

お礼

丁寧なご対応ありがとうございました。 なるほど、確かにデバック中にマウスポインタをもっていったら最終行になっておりました。 書いてくださった文章も一つ一つどんな命令か理解しつつ、使わせていただきました。 今後は一度、図に起こすなど考えを煮詰めてから文章に起こしたいと思います。 ありがとうございました!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Cells(B - 1, 2はCells(0,2)となり時期があって(始めのとき)、これではセルを示せない。 ー 再現してみると Sub test01() Cells(0, "B") = 1 End Sub を事項すると、「実行時エラー1004 アプリケーション、オブジョクトの定義のエラー」となります。 ーー ロジックというか比較対象を良くアンが得ること。 最初の行の扱いは注意が必要。 第1行目のまえは存在しない。はから比較はしないように特別措置が必要。

guren314
質問者

お礼

早速のご回答ありがとうございました。 なるほど、確かに対照できない命令文になってしまう可能性があります。 今後はまず、図などに起こして考えてから作るようにしていきたいと思います。 ありがとうございました。

  • ziziwa1130
  • ベストアンサー率21% (329/1546)
回答No.1

VBAを使わなくても、例えばA1~A1000に数値、B1~B1000に文字列、C1~C300に数値が入っていて、D1~D300にC列に対応する文字列を出したい場合には、D1に"=VLOOKUP(C1,$A$1:$B$1000,2,FALSE)"と入力してコピー、D2~D300にペーストすれば簡単にできますよ。

guren314
質問者

お礼

早速の回答、ありがとうございます。 このような関数があったのですね・・・試した見たところ、非常に簡単に作業できました。 大変助かりました。ありがとうございました! ・・・ただ、質問した手前、と申しますか、VBAの対応も知っておきたいと考えておりますので、質問は締め切らずにいたいと思います(といってもすでに解決しておりますので明日には締め切りますが)。 大変お手数ですが、引き続き回答をいただけたらと思います。 よろしくお願いいたします。

関連するQ&A