- 締切済み
エクセル2013のマクロについて。
Excel 2013のシートでセルに2桁の数字を入れていますがセルの書式設定でユーザー定義を"00"として数値が1桁の場合に頭にゼロがつくようにしてあります。このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式で マクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようですがどなたか原因と解決方法ご存知の方教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.2の追加です。 質問に「セルに2桁の数字を入れています」となっていますのでオーバーフローのエラーにならないと思います。 しかし、E列の処理対象セル範囲に計算結果が文字数0の文字列("")が入っている場合は質問のようなエラーになるでしょう。 条件分岐でエラーを防止するには次のようにします。 If IsNumeric(Cells(hajime,"E")) Then A = Cells(Cells(hajime,"E")) Else: A = 0 End If
- bunjii
- ベストアンサー率43% (3589/8249)
A = Cells(hajime,"E") 変数AはByte型で宣言していますので扱える値が限定されます。 Byte型は0から255の整数のみです。(文字は扱えません) Cells(hajime,"E")の値が文字列などの場合は「実行時エラー'13':型が一致しません。」と言うメッセージを出して停止します。 範囲を超えた数値のとき「実行時エラー'6':オーバーフローしました。」と言うメッセージを出して停止するでしょう。(小数部を含む値のときは小数部を除いた数値に丸められオーバーフローの有無が判断されます) 処理対象のセルに合わせて変数Aの型を定義してください。
- bunjii
- ベストアンサー率43% (3589/8249)
>このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式でマクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようです 変数Aへセルの値を代入する数式を正しくないのではないでしょうか? A = "セル" ' "セル"の内容を具体的に提示してください。 下記のような式になります。 A = Range("A1") A = Cells(1,1)
補足
補足いたします。データは相当大きい物ですので。一定の期間である範囲を計算(チェックする)する仕組みのマクロです。 例として、セル(3,"Z")に1100、セル(5,"Z")に1110のデータが入っており、これは行の事で1,100行から1,110行を示しておりこの10行間で処理させるためで定期的に変更しています。このため例えば1,105行目のE列のセルの値を知るために指定行の変化に対応するため新たにhajime=Cells(3,Z)としてhajime=hajime+5として行を確定しA=Cells(hajime,"E")とした行でエラーコード13が出ました。プログラムは勿論For,Nextでループしています。以上です
お礼
bunjiさま ご教示有難うございます。データに"00'は有りませんし、わざとsum関数で合計をとってみましたが数値として認識しているようです。ロジックの問題かも知れず再検討します。有難う御座いました。