- ベストアンサー
マクロ実行で実行時エラー13発生
- AK24列から9行毎に元のセル値に+10するマクロでエラーになります。実行時エラー13 型が一致しません
- マクロを実行すると、AK294セルまで値は入るが、AK303セル以降の値が入りません。
- 計画シートのAK列を削除してマクロを実行するとエラーが発生しません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
値の型をチェックして見てはどうか。 例えば 例データ A1:A10 12 1 34 56 21 33 a 45 3 q ーー で下記を実行。 If i > 6 And u < 9 Then は狙いを付けて、Printされる行を絞るため入れた。 Sub test02() For i = 1 To 10 If i > 6 And u < 9 Then Debug.Print "行"; i; VarType(Cells(i, "A")) ’演算行の直前に入れる。 End If Cells(i, "B") = Cells(i, "A") + 10 Next i End Sub 実行後、イミディエイトウインドウを表示すると 行 7 8 https://www.sejuku.net/blog/68632 VBAのVarType関数とは 「8」は文字列です。
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
>何が原因でマクロが停止しているのか、原因を把握する手段を >教えていただきたく。 エラーが発生した状態でデバッグモードにして、 イミディエイトウインドウを開いて、 ?Cells(24 + i, 37).Value,len(Cells(24 + i, 37).Value) を入力して、Enterします。 何か表示されるはずです。入力はコードをコピーしています。 別の処理で何か書き込まれている場合もあります。 このような処理の場合、 Sheets("計画").Select Range("AK:AK").ClearContents '// 追加 i = 0 と最初にクリアした方がいいでしょう。
お礼
回答ありがとうございます。 ?Cells(24 + i, 37).Value,len(Cells(24 + i, 37).Value) を実施した所、 0 と表示されました。 なので、何かしらのデータが入っているわけではありません。 Sheets("計画").Select Range("AK:AK").ClearContents '// 追加 とのことですが、AK列は、データが入っているセル、入っていないセルがあるので削除はできないのです。
- kkkkkm
- ベストアンサー率66% (1719/2589)
AK303に空白のスペースでも入っているのではないでしょうか。 文字列に10を加算するので「型が一致しません」になっているような気がします。
お礼
回答ありがとうございます。スペースが入っている場合、F2キーで←と→でカーソル位置が変わるので分かります。今回場合、何も入っていない状態でした。
お礼
回答ありがとうございます 値の型を確認しました。 型以外にも、AK列の文字数、TYPE、 VarType の結果を見たら、 文字数 TYPE VarType 2 1 0 0 2 8 2 1 0 0 2 8 0 1 0 0 1 0 … 0 2 8 ←303行目 となっており、セルに何もデータ無いのにデータ型が文字列になっているのが原因でした。 何故、この様になっているかは?ですが…。
補足
対処内容 Cells(24 + i, 37).Value = Cells(24 + i, 37).Value + 10 の内容を Cells(24 + i, 37).Value = CVar(Cells(24 + i, 37).Value) Cells(24 + i, 37).Value = Cells(24 + i, 37).Value + 10 とすることでエラー解消されました。