• ベストアンサー

VBA:実行時エラー1004

VBAにて以下のコードを実行すると実行時エラー1004が出ます。 dim tokuisakicode as string If Not Sheets("sheet2").Range("A" & cnt2).Value = Sheets("sheet2").Range("A" & cnt2 - 1).Value Then  tokuisakicode = Sheets("Sheet2").Cells(cnt2, 1).Value ↓エラーが出る行  Sheets("A").Cells(1, cnt6).Value = tokuisakicode ↑エラーが出る行  cnt2 = cnt2 + 1  cnt6 = cnt6 + 1 Else  cnt2 = cnt2 + 1 End If エラー1004は自分の経験上記述ミスなどのケアレスミスが多いのですが、今回は原因がどうしてもわかりません。 お分かりの方みえたらお教えください。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.4

Sheets("A")がない cnt6が0 のどちらかでしょう。

その他の回答 (4)

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

こんばんは。 省略されたコードで、本来ミスがあるのか分かりません。 その出されたコードがすべてなら、cnt2, cnt6 に代入値がありませんから、0 もしくは、負の値になるので、エラーが返ります。おそらく、Do ~ Loop などのループをしているのだろうとは思うのですが、回答者が見えない行を想像させられるのは、ちょっと酷です。 この場合、For ~ Next のほうがよいとは思います。行が3行減らせます。 cnt6 = cnt6 + 1 ここのインクリメントの行の位置が問題かもしれません。 Sheets("A").Cells(1, cnt6).Value = tokuisakicodeの前に入れるのかもしれません。 なお、別途、"A" & cnt2 - 1 のcnt2 が数値なら、コードは成立していますが、Cells と Range が混在していますから、Cellsに統一したほうが見やすいです。 それから、 If Not Sheets("sheet2").Range("A" & cnt2).Value = Sheets("sheet2").Range("A" & cnt2 - 1).Value Then 数値や文字判定なら、Not ... ではなくて、左辺 <>右辺 だと思います。間違いとは言いませんが。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.3

こんにちは。  「Sheets("sheet2").Range("A" & cnt2 - 1).Value」の記述で「"A" & cnt2 - 1」の部分が文字列と数値の演算がごっちゃになってます。 では。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

cne2とcnt6が初期化されていませんが If Not Sheets("sheet2").Range("A" & cnt2).Value = Sheets("sheet2").Range("A" & cnt2 - 1).Value Then 上記の行でエラーが出ていますよ

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> Sheets("A").Cells(1, cnt6).Value = tokuisakicode 「SheetA」とやらは存在しますか? シートとセル指定がごっちゃでは?

関連するQ&A