Excel VBA 質問スレッド №108 (未解決)
「参照設定」について教えて下さい。
投稿者 : O田 投稿日時 : 2020/09/12(Sat) 15:33:00 OS : Windows 10 EXCEL : Excel 2007
「式が複雑すぎます。」という謎のエラーがでます。という質問をしていた者です。
あれ以後少し調べたところ、解決策っぽいものが見つかったのですがやり方が分かりません。サイトに載っていた次のやつのやり方を教えて下さい。
‘ この場合、参照設定を可能な限り外してからファイルを開きなおし、
管理者モードで起動してから参照設定をやり直すことで解決することがあります。’
「式が複雑すぎます。」という謎のエラーがでます。という質問をしていた者です。
あれ以後少し調べたところ、解決策っぽいものが見つかったのですがやり方が分かりません。サイトに載っていた次のやつのやり方を教えて下さい。
‘ この場合、参照設定を可能な限り外してからファイルを開きなおし、
管理者モードで起動してから参照設定をやり直すことで解決することがあります。’
スポンサーリンク
[返信 1] Re : 「参照設定」について教えて下さい。
投稿者 : ヘンリー 投稿日時 : 2020/11/23(Mon) 22:35:16
■[質問] O田さん(2020-09-12 15:33:00)の記事
> 「式が複雑すぎます。」という謎のエラーがでます。という質問をしていた者です。
>
> あれ以後少し調べたところ、解決策っぽいものが見つかったのですがやり方が分かりません。サイトに載っていた次のやつのやり方を教えて下さい。
>
> ‘ この場合、参照設定を可能な限り外してからファイルを開きなおし、
> 管理者モードで起動してから参照設定をやり直すことで解決することがあります。’
VBEの画面からツール→参照設定でチェックを外します。
(外せないのもあります)
当方では、同様のエラーが出ませんでした。
「式が複雑すぎます」のエラーを解決すべく、
色々当たっていたところ、以下のような事が、
起こることがわかりました。
以下は、似たようなエラーが出ている人のコードを引用しています。
Dim DimDbl As Double
Dim CELL As String
CELL = "A1"
With ActiveSheet
DimDbl = 1.1 + CDbl(.Range(CELL)) 'エラーになる
End With
With ActiveSheet
DimDbl = 1.1 + CDbl(ActiveSheet.Range(CELL)) 'エラーにならない
End With
浮動小数点式に、ネストされたサブ式が過度に含まれます。
というヒントから推測して、「ネスト」つまり、上記のコードで行くと
Withブロックが当てはまると思い、Withを無視して書いたところ、
エラーは出ませんでした。
ネストとは、「あるものの中に、それと同じ形や種類の(一回り小さい)ものが
入っている状態や構造のこと。」という事で、Withブロックもネストと判断しました。
以前は出なかったとありますが、32ビット版と64ビット版で
新しいバージョンではエラーが出るという事はありそうです。
「浮動小数点式」というのは、なかなか取り扱いが面倒なようです。
例えば、123.45を浮動小数点で表すと、12345×10^-2と表されます。
これは、12345と-2という値をメモリにセットして、12345×10^-2を計算してから
扱うようになっているため、計算領域もメモリに確保します。
そうなれば、当然メモリの割り当てが32ビットと64ビットで変わるので、
ネストがあったり、或いは、式の順番によっては、
複雑すぎる計算をやろうとしてしまうようです。
遅くなりましたが、ご参考して頂けると幸いです。
■[質問] O田さん(2020-09-12 15:33:00)の記事
> 「式が複雑すぎます。」という謎のエラーがでます。という質問をしていた者です。
>
> あれ以後少し調べたところ、解決策っぽいものが見つかったのですがやり方が分かりません。サイトに載っていた次のやつのやり方を教えて下さい。
>
> ‘ この場合、参照設定を可能な限り外してからファイルを開きなおし、
> 管理者モードで起動してから参照設定をやり直すことで解決することがあります。’
VBEの画面からツール→参照設定でチェックを外します。
(外せないのもあります)
当方では、同様のエラーが出ませんでした。
「式が複雑すぎます」のエラーを解決すべく、
色々当たっていたところ、以下のような事が、
起こることがわかりました。
以下は、似たようなエラーが出ている人のコードを引用しています。
Dim DimDbl As Double
Dim CELL As String
CELL = "A1"
With ActiveSheet
DimDbl = 1.1 + CDbl(.Range(CELL)) 'エラーになる
End With
With ActiveSheet
DimDbl = 1.1 + CDbl(ActiveSheet.Range(CELL)) 'エラーにならない
End With
浮動小数点式に、ネストされたサブ式が過度に含まれます。
というヒントから推測して、「ネスト」つまり、上記のコードで行くと
Withブロックが当てはまると思い、Withを無視して書いたところ、
エラーは出ませんでした。
ネストとは、「あるものの中に、それと同じ形や種類の(一回り小さい)ものが
入っている状態や構造のこと。」という事で、Withブロックもネストと判断しました。
以前は出なかったとありますが、32ビット版と64ビット版で
新しいバージョンではエラーが出るという事はありそうです。
「浮動小数点式」というのは、なかなか取り扱いが面倒なようです。
例えば、123.45を浮動小数点で表すと、12345×10^-2と表されます。
これは、12345と-2という値をメモリにセットして、12345×10^-2を計算してから
扱うようになっているため、計算領域もメモリに確保します。
そうなれば、当然メモリの割り当てが32ビットと64ビットで変わるので、
ネストがあったり、或いは、式の順番によっては、
複雑すぎる計算をやろうとしてしまうようです。
遅くなりましたが、ご参考して頂けると幸いです。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-24 14:17:59 )