次の方法で共有

Excel VBAよりエクセル関数を設定するマクロを他言語(スペイン語、ドイツ語等)環境にて実行した場合

Anonymous
2010-09-06T09:54:51+00:00

いつもお世話になっております。

エクセルの関数をVBAより設定するときの質問です。

下記のマクロをスペイン語環境で実行したらエラーになりました。

  マクロ①:Cells(1, 1).FormulaLocal = "=SUM(R2C:R[5]C)"

  エラーメッセージ:Erro de definição de aplicativo ou de definição de objeto

日本語環境での「SUM」関数はスペイン語では「SUMA」と入力するそうなので、

エラー原因は文字列で"SUM"と記述しているところにあると考えていましたが、

日本語環境にて下記のマクロを実行したところ計算式設定セルに 「#NAME?」 と

表示されるだけでマクロ実行時エラーにはなりませんでした。

  マクロ②:Cells(1, 1).FormulaLocal = "=aaaaaaaaaaaaaa(R2C:R[5]C)"

話をややこしくしてしまって申し訳ありませんが、マクロ①の例のように

日本語環境にて正しく実行できるマクロが、スペイン語環境だと実行時エラーが

発生してしまう状況についてどなたか情報をお持ちの方がおりましたら、是非、

ご教授お願い致します。

※この質問は下記フォーラムより移動してきました。

[Windows クライアント開発 フォーラム]

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-09-07T10:52:32+00:00

他の言語環境もってませんから、試してませんが、そもそも、FormulaLocal使ってることがまずいのでは

FormulaでやればどのロケールでもSumで動きませんか?

ピントが外れてたら無視してください。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

5 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-09-08T02:40:16+00:00

    y sakuda さん

    !!!!!!!!!!!!!!!!!! ビ、ビンゴですっ! \T.T/

    と、いっても、「SUM」と「SUMA」の問題とは少しズレますが。。。

    私も他の言語環境で簡単に試せる状況ではないので、自分のPCをコントロールパネルの

    「地域と言語のオプション」でポルトガル(ポルトガル語)に設定し次のことを試しました。

    セルに「=IF(A1=B1, 0, 1)」を入力したところエラー(入力した数式は正しくありません)。

    よくよく見ると、「IF」関数のインテリジェンス(?)のデリミタ(?)がセミコロン「;」になっているので

    セルに「=IF(A1=B1; 0; 1)」を入力すると正常に動作しました。

    以上のことを踏まえて下記のマクロを実行しました。

       Cells(1, 3).Formula = "=IF(A1=B1, 0, 1)"       ' 正常

       Cells(1, 3).Formula = "=IF(A1=B1; 0; 1)"       ' エラー

       Cells(1, 3).FormulaLocal = "=IF(A1=B1, 0, 1)"  ' エラー

       Cells(1, 3).FormulaLocal = "=IF(A1=B1; 0; 1)"  ' 正常

    結果、y sakudaさんのおっしゃる通り、「Formula」と「FormulaLocal」の仕様を

    理解せずに使用していたことが問題でした。

    至極的確なご指摘、ありがとうございました。

    ※「SUM」と「SUMA」の問題も「Formula」プロパティを使用することで解決だと思われますが、

    ただいま他言語環境にて調査中です。

    追記:「地域と言語のオプション」をポルトガルにしても「SUM」は「SUM」のままでした。

          これはExcel自体再インストールしないと変更できないんですかねぇ

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2010-09-07T06:05:12+00:00

    こんにちは。

    LC(ロケール)IDでしたらLanguageSettingsオブジェクトLanguageIDプロパティで

    取得することができるかと思います。

    日本語環境ですと「1041」ですが、スペイン語環境ですと「1034」が返ってくるはずです。

    Public Sub Sample()

      With Application.LanguageSettings

        Debug.Print .LanguageID(msoLanguageIDInstall), .LanguageID(msoLanguageIDUI)

      End With

    End Sub

    「ロケール ID (LCID) の一覧」

    http://msdn.microsoft.com/ja-jp/library/cc392381.aspx

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2010-09-07T02:32:30+00:00

    きぬあさ さん

    返信ありがとうございます。

    >> たしかに Listado de funciones de hoja de cálculo (alfabético) - Excel - Microsoft Office を

    >> 見ると「SUMA」になっていますね。

    そうですね。ちなみにドイツ語環境では「SUMME」らしいです。

    >> 「SUMA」がスペイン語版にしか無いのであれば、

    >> 「.FormulaLocal = "=SUMA(...)"」ではないでしょうか。

    はい、私もそう思います。

    説明不足で申し訳ありませんが、私の周りにスペイン語環境は無く、

    簡単にテストすることができない状況にあります。また、作成した

    Excel(マクロ)は多言語環境にて実行されます。

    この場合、下記のような方法でしか解決できませんでしょうか?

    また、「実行言語環境」を取得することは可能なのでしょうか?

    Select Case 「実行言語環境」

        Case [日本語]

            「.FormulaLocal = "=SUM(...)"」

        Case [スペイン語]

            「.FormulaLocal = "=SUMA(...)"」

        Case [ドイツ語]

            「.FormulaLocal = "=SUMME(...)"」

    End Select

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2010-09-07T00:41:35+00:00

    こんにちは。

    たしかに Listado de funciones de hoja de cálculo (alfabético) - Excel - Microsoft Office

    見ると「SUMA」になっていますね。

    私自身スペイン語環境のExcelは使用したことがないのですが、「SUMA」がスペイン語版にしか

    無いのであれば、「.FormulaLocal = "=SUMA(...)"」ではないでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません