Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1803 / 13645 ツリー ←次へ | 前へ→

【71818】実行時エラー'6'オーバーフローしました さち 12/4/12(木) 15:48 質問[未読]
【71819】Re:実行時エラー'6'オーバーフローしました さち 12/4/12(木) 15:50 発言[未読]
【71820】Re:実行時エラー'6'オーバーフローしました Jaka 12/4/12(木) 16:09 発言[未読]
【71821】Re:実行時エラー'6'オーバーフローしました さち 12/4/12(木) 16:28 質問[未読]
【71822】Re:実行時エラー'6'オーバーフローしました さち 12/4/12(木) 16:30 発言[未読]
【71824】Re:実行時エラー'6'オーバーフローしました Jaka 12/4/12(木) 16:38 発言[未読]
【71823】Re:実行時エラー'6'オーバーフローしました さち 12/4/12(木) 16:30 発言[未読]
【71825】Re:実行時エラー'6'オーバーフローしました とおりすぎ 12/4/12(木) 17:19 回答[未読]
【71826】Re:実行時エラー'6'オーバーフローしました とおりすぎ 12/4/12(木) 17:32 回答[未読]
【71828】Re:実行時エラー'6'オーバーフローしました UO3 12/4/12(木) 21:43 発言[未読]
【71829】Re:実行時エラー'6'オーバーフローしました さち 12/4/12(木) 22:12 お礼[未読]

【71818】実行時エラー'6'オーバーフローしました
質問  さち  - 12/4/12(木) 15:48 -

引用なし
パスワード
   C列に数量、E列に合価がありD列にマクロを使って単価を入力します。



Dim intDataCnt As Integer
    
    intDataCnt = 2  
  
Do While Range("D" & intDataCnt).Value = ""
 
    Range("D" & intDataCnt) = Range("E" & intDataCnt).Value / Range("C" & intDataCnt).Value
 
     intDataCnt = intDataCnt + 1
 
   Loop
   
End Sub

マクロは完成したのですが、
「実行時エラー'6'オーバーフローしました」
となりました。
このエラー回避法を教えていただけないでしょうか。。。

【71819】Re:実行時エラー'6'オーバーフローしまし...
発言  さち  - 12/4/12(木) 15:50 -

引用なし
パスワード
   補足です。

数量、合価、単価はすべて2行目から入力しています。

【71820】Re:実行時エラー'6'オーバーフローしまし...
発言  Jaka  - 12/4/12(木) 16:09 -

引用なし
パスワード
   >マクロは完成したのですが、
>「実行時エラー'6'オーバーフローしました」
>となりました。

intDataCnt As Integer

Integer型は、37千なんぼぐらいまでしか扱えないので、
それを超えるとエラーになります。

Long型にしてください。

【71821】Re:実行時エラー'6'オーバーフローしまし...
質問  さち  - 12/4/12(木) 16:28 -

引用なし
パスワード
   ▼Jaka さん:

コメントありがとうございました。
「Long型にする」というのは

  intDataCnt As Long

このようにするのでしょうか。
再度試してみたんですが、同じエラーが出てしまいました。。。

【71822】Re:実行時エラー'6'オーバーフローしまし...
発言  さち  - 12/4/12(木) 16:30 -

引用なし
パスワード
   ▼さち さん:

 Dim intDataCnt As Long

こうですね。

すみません、補足をおねがいします。

【71823】Re:実行時エラー'6'オーバーフローしまし...
発言  さち  - 12/4/12(木) 16:30 -

引用なし
パスワード
    Dim intDataCnt As Long

こうですね。

すみません、補足をおねがいします。

【71824】Re:実行時エラー'6'オーバーフローしまし...
発言  Jaka  - 12/4/12(木) 16:38 -

引用なし
パスワード
   ▼さち さん:
> Dim intDataCnt As Long
>
>こうですね。
>
>すみません、補足をおねがいします。

はいそうです。

例えば、

Dim intDataCnt As Integer
intDataCnt = 40000

ってやると、同じようなエラーがでます。

【71825】Re:実行時エラー'6'オーバーフローしまし...
回答  とおりすぎ  - 12/4/12(木) 17:19 -

引用なし
パスワード
   CDbl(Range("E" & intDataCnt).Value) / Range("C" & intDataCnt).Value
かな。

あるいは、
Range("E" & intDataCnt).ValueとRange("C" & intDataCnt).Valueどちらかが0だとか。

【71826】Re:実行時エラー'6'オーバーフローしまし...
回答  とおりすぎ  - 12/4/12(木) 17:32 -

引用なし
パスワード
   >Range("E" & intDataCnt).ValueとRange("C" & intDataCnt).Valueどちらかが0だとか。

この場合は、エラーメッセージが違うから関係ないか。

【71828】Re:実行時エラー'6'オーバーフローしまし...
発言  UO3  - 12/4/12(木) 21:43 -

引用なし
パスワード
   ▼さち さん:

こんばんは

すでに指摘がありますが行番号用の変数はLong型がいいですね。
というか、どんな場合も、Integer型は使わない、VBAではInteger型がないと思って
コードを記述した方がいいかもしれません。Single型もない。
あるのは Long型かDouble型だと、そう、思い込み(?)ましょう。

officetanaka.net/excel/vba/error/execution_error/error_6.htm

ここにヒントがあると思います。

Range("D" & intDataCnt).Value = CDbl(Range("E" & intDataCnt).Value) / CDbl(Range("C" & intDataCnt).Value)

これでいかがでしょう。

【71829】Re:実行時エラー'6'オーバーフローしまし...
お礼  さち  - 12/4/12(木) 22:12 -

引用なし
パスワード
   ▼Jakaさん、とおりすぎさん、UO3さん:

できました!
ありがとうございました。

VBAではLong型かDouble型で考えた方がいいんですね。

とても参考になりました。

1803 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free