- ベストアンサー
VBでのデータ転記についてのエラーの解決方法を教えてください
- VBでデータ転記のプログラムを作成していますが、C列の値ごとの転記がうまくいきません。
- エラーメッセージも表示されず、どこに問題があるのかわかりません。
- どなたか解決方法を教えていただけないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>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)
>> ANo.2 >あと、Cells(i, "C") は正当な書き方なので し、知らなかった・・・ indexだと信じて、いつもわざわざ変換してたよ(--; 書式統一しないとバグ増えやすいのもあるけど。。。
- ap_2
- ベストアンサー率64% (70/109)
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