• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの転記について)

VBでのデータ転記についてのエラーの解決方法を教えてください

このQ&Aのポイント
  • VBでデータ転記のプログラムを作成していますが、C列の値ごとの転記がうまくいきません。
  • エラーメッセージも表示されず、どこに問題があるのかわかりません。
  • どなたか解決方法を教えていただけないでしょうか。

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

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

>With Sheets("入力") ときて >SheetName = Sheets("入力").Cells(i, "C").Value >SheetName2 = .Cells(i, "C").Value なので、SheetNameとSheetName2は全く同じ文字列になっています。 これで大丈夫なのでしょうか? そしてU最終行が39の時には Sheets(SheetName)が削除されます。マクロを走らせる時点で、 ワークシートSheetNameが存在していれば Err.Number は、値を判定する時点では 0 になっているはず。その場合、削除したばかりのSheets(SheetName) のセル に書き込もうとしています。これが原因では? 一番の敗因は、On Error Resume Next をマクロの最初の方で使用していて、最後まで リセットを行っていない点でしょう。 このせいで、本来エラーでプログラムが止まる場所でも、素通りしてしまうので、 間違いに気づきにくい。最初はOn Error Resume Next 等は無しで作成した方がよいかも? >If Err.Number = 0 Then のある行も、On Error Resume Next から何行も離れているのは感心しません。 これでは、どの行がエラーになっているかわからないからです。エラーが起きるかも しれない行の直後に書きましょう。 あと、Cells(i, "C") は正当な書き方なので、これが原因ではありません。 以上

その他の回答 (2)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.3

>> ANo.2 >あと、Cells(i, "C") は正当な書き方なので し、知らなかった・・・ indexだと信じて、いつもわざわざ変換してたよ(--; 書式統一しないとバグ増えやすいのもあるけど。。。

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

Cellsの引数は数値ですよ。エラー発生して処理飛んでるんじゃ?  × SheetName2 = .Cells(i, "C").Value  ○ SheetName2 = .Cells(i, 3).Value  ※同じミスがたくさん -------- VBAは、VisualBasicEditorがあるからこそ、簡単で便利なんです。 すこし機能を紹介するので、自力で直せるよーになってください。 ・ブレイクポイント  処理を一時停止します。ステップ実行や、変数の中身を確認ができます。 ・ステップ実行  処理を1行ずつ実行したり、戻したり進めたりできます。 ・ローカルウィンドウ  処理停止中に、変数の中身が表示されます。 ※くわしくは「VBE デバッグ」とかで検索  http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html