次のコード例に問題が縮小されました。私はドイツのExcel版を使用しています。通常のExcel式の区切り記号はセミコロン ";" "、"の代わりに使用してください(例:=SUM(A1,A3)
の代わりに=SUMME(A1;A3)
)。
時から異なる動作します今すぐコード:範囲では、カンマの代わりにセミコロンだけが使用されることがあります
Sub CommasDoNotWorkAnymore()
Dim a()
Dim i%
a = Array("A1,A3,A5", "B1", "B2")
i = 0
Debug.Print Sheets(1).Range(a(i)).Address
End Sub
通常、Excelを起動するときに、このコードは動作します。しかしExcelはExcelを再起動するまで、Range()
で使用されている区切り記号をセミコロンに切り替えることがあります。これは、ランタイムエラーの後でコードを再実行するときに発生します。
これは一般的なExcelバグですか?誰もこの行動の背後にあるものを知っていますか? Range
クラスには、Excel全体の「ローカルオプション」がありますか?
編集:a(i)
をCStr(a(i)
に変換しようとしましたが、これも機能しません。だからByRefの種類の問題...
を前に注目されている。このように見えるの英語のために1033年になりLCID(米国)を与えます-suddenly-accepts-only-localized-arguments-pt-br) – CLR
My Excel UIはセミコロンも使用します。あなたのコードは完璧に私のために動作します。デバッグボタンをクリックしてイミディエイトウィンドウを使用して関連する変数を問い合わせる – user3598756
ドイツ語版のExcelでは、ドイツ語ですでに '、'が小数点の区切り文字として扱われているため、リストの区切り文字として ';' 「1/2」は「0.5」の代わりに「0,5」と書かれているからである。あなたが*時には*これが起こっていると言っているので、私はこれを言及しています。ですから、これが起こるたびに 'Application.DecimalSeparator'をチェックするようにお願いしたいと思います。 '、'が動作する場合、 'Application.DecimalSeparator'は' .'でなければなりません。しかし、それ以上動作しなくて、代わりに ';'が必要な場合、 'DecimalSeparator'も'、 'に変更されたと仮定しています。 – Ralph