質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

2443閲覧

mac Excel VBAでオーバーフローのエラー

akihico

総合スコア27

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2021/02/19 15:48

前提・実現したいこと

Mac の Excel vba で簡単な計算をしていますが、「オーバーフローしました。」とエラーになってしまいます。

どのように対処すればよろしいでしょうか。

実行時エラー '6': オーバーフローしました。

該当のソースコード

Excel

1Sub my_test() 2 Dim w_test 3 4 w_test = 0.66 - 0.5 5 6End Sub 7

試したこと

こちらのページを参照し・・・
[1] Office TANAKA - VBAの実行時エラー[オーバーフローしました。(エラー番号:6)]
http://officetanaka.net/excel/vba/error/execution_error/error_6.htm
==== 引用開始 ====
「=」演算子で、右辺を左辺に代入するとき、VBAはまず右辺の計算結果を確定させます。エラーになったSample2で、右辺の「330」と「100」は、どちらも整数型(Integer)の許容範囲内の数値です。つまり「整数型 × 整数型」という式ですね。こんなときVBAは「整数型 × 整数型」の計算結果を、まず同じ整数型に入れようとします。整数型の許容範囲は32767までです。330 × 100 = 33000 は、整数型の許容範囲を超えているので、右辺の計算過程において「オーバーフローしました」ということです。
==== 引用終了 ====

Excel

1 2 w_test = CSng(0.66) - CSng(0.5)

問題の箇所を上記にしてみましたが、同じエラーが発生します。

補足情報(FW/ツールのバージョンなど)

Microsoft Excel for Mac バージョン 16.45
Microsoft Visual Basic for Applications 7.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Macの全く同じ環境で確認しましたが、
エラーは発生しませんでした。
新規ファイルにコードを書いて試してみてはいかがでしょう

また、可能性は低いですが
同ファイルで他にコードを書かれた部分があるのなら
それが影響している部分もあるかもしれません。

投稿2021/02/19 22:50

radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akihico

2021/02/20 03:13

ご指摘のとおり、このプロシージャで記述していた「Debug.Print」を消したら、動作しました。 出力回数は多くないので、腑に落ちていませんが、ひとまず動きました。ありがとうございます!
guest

0

リンク先は整数型(Integer, Long)についての話なので、今回の件とは直接は関係ないですね。浮動小数点数の演算になりますので。

当方はWindowsですのが、そのコードでエラーはでません。
Macは持ってないので確認はできませんが、下記のコードだとどうなりますか。

vba

1Sub my_test() 2 Dim w_test As Double 3 4 w_test = 0.66 - 0.5 5 6End Sub

あるいは、

vba

1Sub my_test() 2 Dim w_test As Currency 3 4 w_test = CCur(0.66) - CCur(0.5) 5 Debug.Print w_test 6 7End Sub

投稿2021/02/19 16:09

hatena19

総合スコア33790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akihico

2021/02/20 03:17

記載が漏れていて申し訳ありませんが、エラーが起きたプログラムの一部を切り出して実行していたので、他の部分が影響していました。話は逸れますが、カレンシー型は小数点以下も行けたんですね。勉強になりましたm(_ _)m
hatena19

2021/02/20 03:26

Currencyは小数点4桁までですが、誤差のない演算が可能です。浮動小数点数は演算誤差がありますので、その点は留意しておく必要があります。
akihico

2021/02/20 03:32

了解しました。ご親切に補足していただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問