2017-06-16 7 views
0

ExcelでVBAプログラムを作成する過程で、どこにも書かれていないようです(これまで見たことがない)。メモリ割り当てに奇妙な特殊記号があります

セルの内容の制限は0-32767文字で記述されていますが、「@」、「 - 」、「+」、「=」の文字については、これらの文字を8192を超えてセルに追加するVBAスクリプトは作成できません文字数は32768の奇妙な1/4です。

私がプログラムでメモリ割り当てに関する他の問題を回避するために、別のスクリプトを作成しました。その後、

Function Insert() 

    For i = 1 To 8199 
     Range("J13") = Range("J13") & "@" 
    Next 

End Function 

プログラム連結し、「@」のセルには、最大(および含む)8192と、「メモリ不足のランタイムエラー7」エラーで停止します。プログラムが停止すると、手動でセルにもっと多くのシンボルを入力できるので、セル制限ではないようです。

私も、私はプログラムを開始する前に、約1000のシンボルを手動で入力しようとしたが、それはまだフルサイズの標準米国形式のキーボード上の任意の特殊文字の標準を使用している場合、この問題は発生しません8192

で停止(私が列挙した4つを除く)。

文字エンコーディングとこれらの文字の対応するメモリ要件が原因であると思われましたが、これら4つのシンボルのメモリ要件がキーボードの他の標準シンボルと異なることを示す情報は見つかりません。

これはなぜ起こっているのかについての洞察はありますか?

そして、奇妙なことに、これらのタイプの8192文字以上のセルがある場合があります。

答えて

0

これらの4つの文字が式の始まりとして有効ですが、Excel specifications and limits状態:式内容の

長さ - それはとして解釈されているので、そうRange("J13") = String(8193, "@")は(失敗する8192文字

数式として解釈されないため、Range("J13") = "x" & String(8193, "@")が機能します)。


この問題を回避するには、セルを強制しますRange("J13") = "'" & String(8193, "@")はそれでちょうど8193 "@"文字で、テキストとして扱われることを用いることであろう。


注:@記号は式(およびそれを入力した後=に変更されます)を開始するために使用することができ、なぜ私はをうまくしようとしている私の頭を悩まました。私はどこかで使用されているのを知っていたので、私はそれを見つけ出し、Lotus123で式を開始したことを思い出させるページを見つけました。したがって、これはExcelに組み込まれており、Lotus123以前のユーザーは通常の方法で作業を続けることができます。 (/がメニューを表示する理由と同じ理由です)

関連する問題