• 締切済み

excel(エクセル) マクロ 文字化け 海外

日本語のOSで製作されたマクロです。 海外(中国語版)のOSでエクセルを開き、マクロボタンを押したんですが、エラーメッセージが出ました。エラーメッセージは文字化けです。エラー時Dを押してマクロを見たのですが、?マークや空白がたくさんありました。 マクロを使いたいのですが、どうしてもよくわかりません。 日本語のOSでは、問題なく使えます。 初心者ですが、よろしくお願いします。 エラーの時、ヘルプを押しました。 只能在定義的範囲内存取陣列元件和集合物件成員。此錯誤有以下的起因和解決方法: ●引用了不存在的陣列元件. 陣列索引對此陣列索引範圍可能過大或過小,或是在應用程式中此點沒有指定範圍。検査陣列的宣告以確認其上界和下界。若使用的是重訂範圍的陣列,使用 UBound 和 LBound 函數來決定陣列存取。如果索引指定為變數,請検査変數名稱的字。 ●宣告陣列時沒有指定元件數目。例如,下列的程式碼就會導致此錯誤: ●Dim MyArray() As Integer ●MyArray(8) = 234 ' 導致錯誤 9。 Visual Basic 並不會將沒有指定範圍的陣列自動設為 0 - 10。必須使用 Dim 或 ReDim 來指定陣列中元件的數目。 ●引用了不存在的集合物件成員。 試著使用 For Each...Next 結構代替指定元件索引。 ●使用速寫法陣列索引,結果指定了錯誤的元件。 例如,當在集合物件上使用 ! 運算子時,! 自動指定了一個索引鍵。例如 object!keyname.value 和 object.item(keyname).value 是一樣的。在此例中,集合物件中如果 keyname 表示一個錯誤索引鍵,錯誤就會産生。若要改進此錯誤,在集合物件中使用正確的索引鍵名稱或索引。

みんなの回答

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

さすがに手元に無い物でなんともですが、日本語の命令を一切使用せず、 >ロケール (国または地域) の設定を変更すると、数字、通貨、時刻、日付の標準設定はその国または地域に合わせて変更されます。 となっているので、これらに依存しない命令(CCurとかCDate辺りをさける)のみで構成されていれば、恐らく動作するハズです 日本語のSubなどがある時は、ローマ字にしてしまえば(Sub 合計→Sub goukei)問題ないと『思います』 あとは実際に使ってる人じゃないと実情はわからないですね 中国に赴任されている方たちのコミュニティなどに質問してみるのもいいかも知れません どこでやってるのか、そもそもそんな物あるのかも不明ですが、海外での赴任生活は心細いものがあると思うので、お互い知恵を出し合う場がある可能性が高いと思いますが… 中国 生活 コミュニティ と検索すると、結構引っ掛かりますね もう少しキーワードを増やせば何か当たるかも知れません すいません あんまり役に立ってないですね^^;

3895010
質問者

お礼

pulsaさん、回答をありがとうございます。

回答No.2

ANo.1です。 ANo.1は質問の内容から推測しただけで、中国語版Windowsも中国版語Excelも使ったことがないので以下も推測ですが・・・ (1)今、中国語版OSしか無く、中国語のエクセルで作動させる方法はありますか? 「何を」作動させる方法なのかがわからない文章ですが、たぶんマクロ(またはVBA)として答えます。 まず、質問の中で不思議な部分があるのですが、中国語版OSで中国語のExcelを正しく動かしているなら、 >エラーメッセージは文字化けです。エラー時Dを押してマクロを見たのですが、?マークや空白がたくさんありました。 と言う事はないと思います。 少なくとも正しく中国語のエラーメッセージが出るはずです。 とすると、Excelが中国語でないのかとも考えましたが、ヘルプの内容も中国語にならないはずだと思うので、コントロールパネルの地域と言語の設定で何か不具合があるのかもしれません。 (2)日本語OSを使う機会がある時にマクロを全部コピーし、中国語版OSにペーストすれば、マクロは作動しますか? 両方で動くように作ってあれば、マクロ(VBA)は基本的には動くはずだと思います。 どこをどのように作れば動くのか(動かないのか)に関しての詳しい事例はわかりませんが、少なくともオブジェクト名や変数名などは両方で使えるアルファベットにすべきだと思います。 ただ、もしかしたらunicodeの関係で、どうしても動かない場合も考えられますが・・・ 以上はどうしても推測なので、詳しくは誰かやったことある人にお願いします。

3895010
質問者

お礼

fumufumu_2006さん。回答をありがとうございます。 >少なくとも正しく中国語のエラーメッセージが出るはずです。 もう一度確認しました。ご指摘の通り、エラーメッセージは中国語でした。文字がわからず、文字化けだと思っていました。エラーメッセージ時の「D」は漢字で表示されてました。 マクロは、右のような感じです。Worksheets("   ? ").Activate 中国語版excelしか無く、マクロの空白部分や?は日本語ではないかと思います。 二つ回答して頂き、まことに感謝です。 少しずつ研究していきたいと思います。

回答No.1

多分ですが・・・ 「実行時エラー'9':インデックスが有効範囲にありません」 と言うエラーだと思います。 Sub test() Dim MyArray(7) As Integer MyArray(8) = 234 '<-ここでエラーになる End Sub こんなプログラムを実行した時のエラーで、ヘルプを表示した場合の表示の中に時々出てくる英文(プログラム)が一致してます。 基本的には配列の添え字がおかしいか、Sheets("sheet1").Cells(1, 1)...とかで"Sheet1"が無い場合とかの、()の中の値が不正な場合だと思います。 エラーになる行を見て、()の中の値をチェックしてみてはどうでしょうか?

3895010
質問者

お礼

回答をありがとうございます! ()内の値が不正なのが、わかりました。 ?や空白が多いのは、そのせいだと思います。 二つ質問があります。 (1)今、中国語版OSしか無く、中国語のエクセルで作動させる方法はありますか? (2)日本語OSを使う機会がある時にマクロを全部コピーし、中国語版OSにペーストすれば、マクロは作動しますか? すみません。素人な質問ですが、よろしくお願いいたします。

関連するQ&A

  • エクセル2007にてマクロを使用して

    エクセル2007にてマクロを使用して 選択範囲に文字があれば文字に色をつけたいのですが、どのようにすればよいでしょうか? 条件付き書式で出来るのは分かるのですが、マクロで範囲指定してやりたいのですが、お願いします

  • エクセル 印刷マクロ

    Win XP /エクセル2003 使用です。 エクセルで請求書を作成しています。 1件の請求書に1行目から100行目を使用し、 2件目は、101行目から200行目、 3件目は、201行目から300行目・・・を使用しています。 現在、印刷する時は、一枚一枚、 「印刷範囲を指定」して出力しているのですが、 これをマクロまたはVBAのボタン機能を使って、 印刷できるようにしたいのですが、 何か良いサンプルなどはありますでしょうか? よろしくお願いいたします。

  • EXCEL のマクロを作りたいんですが・・・

    マクロはあまり詳しくありません。マクロの記憶で設定し、多少内容の変更をする程度です。 マスターのBOOKがあり、月ごとにデータを入力し、その都度名前を付けて保存します。 (データの量はまちまちです) Sheet1にデータを入力し、Sheet2には関数が入っております。 使いたいのはSheet2にあるデータなのですが、データが無い欄は関数が入っていますので、そのままではデータとして使うのが面倒です。 CSVで出力するにしても、空の関数の欄が,,,,と出ます。 データが入っているセルだけを範囲指定して、値の貼り付けをし、使用していない空のセルの関数を消すというマクロが出来るでしょうか?

  • エクセルのマクロの有効の仕方

    EXCEL2003で作成したマクロを含むファイルをEXCEL2007で開くと『マクロを有効できません』という警告が出てきます。 無視してそのままファイルを開き、マクロの設定してあるボタンをクリックすると、やはり『マクロを有効にしてください』の警告が再び表示されます どうすればマクロを有効にすることが出来るのでしょうか?詳しい方がみえたら教えて下さい。 ちなみに、マクロの設定のボタンの内容は、指定した範囲の印刷をするように設定してあります。 OSはVistaです。 自分自身がマクロを設定してEXCELのファイルを作成したことがないので、知り合いに作成してもらったファイルなのですが、バージョンがEXCEL2003を使用しているみたいです。 マクロ作成の詳しいサイト等知っていたら教えてください。

  • エクセルのフォームについて教えてください。(マクロ記録)

     エクセルにレコードを入力するのにフォーム機能を使用し、その手順をマクロに記録したいのですが、うまくいきません。(エクセル2000使用)  シートの一部分(表自体はA列からQ列まであるのですが、入力部分はI列まで)にレコードを入力するので入力部分を範囲指定し、フォーム機能を使用したいのです。  マクロに登録しなければフォーム画面に入力したい項目が全て表示されるのですが、それをマクロに登録して、それを実行すると、入力項目がA列の部分しか表示されません。入力するたび範囲指定するのが面倒なのでマクロに記録させたいのですが・・・。  マクロの内容はこんな風になってたんですけど。どなたか教えてください。お願いします。 「 Range("A1:I149").Select  ActiveSheet.ShowDataForm 」

  • Excelマクロで質問です。変数宣言をしてmyRowで得た数値を使って

    Excelマクロで質問です。変数宣言をしてmyRowで得た数値を使って、以下の処理を行うには、どうマクロを組んだら良いのか教えて下さい。(myRowで得た値が120と仮定します) (1)A2からD120の範囲指定 (2)A2からD12(→myRowの1/10、120/10=12。myRow/10は正しい使い方でしょうか?)の範囲指定 (3)もうひとつmyRowを使用する場合、   Dim myRow2 As Long   myRow2 = ....のように使用して良いのでしょうか? 以上、よろしくお願いします。

  • エクセルVBA(マクロ内でマクロを選択する)

    いつも有難うございます。 表題の件でご教示ください。 エクセルVBAのマクロ内でマクロを選択して実行したいと考えてます。 調べたのですが、単にマクロ内で他のマクロを呼び出す方法はありましたが 「選択して」という点が見つからず、恐縮ですがお願いいたします。 具体的には以下のような内容です。 (1)基本となるデータが1~100まであるとする (2)サブルーチンとしてのマクロ群A~Gがあるとする (3)データ1に対してはマクロAを行い、データ2、3に対してはマクロBを行い・・・という形でそれぞれ対応させるマクロが違う (4)データ50~70は同じマクロを実行したい (5)このときに実行するマクロで ・対象のデータを選択させる(入力BOXで開始番号(50)と終了番号(70)を指定する) ・A~Gのどのマクロを実行させるか選択させる ・データ50~70に対して、選択したA~Gのいずれかのマクロを順次実行していく というものを作りたいと考えています。 全体的なイメージは完成しているのですが、マクロ群を選択させる方法がわかりません。 (マクロ群A~Gはすでに作って使用です) 何卒、宜しくお願いいたします。

  • エクセル マクロ 既存グラフの削除

    また 質問させていただきます。 左側に表全体を範囲指定した折れ線グラフを、マクロを実行して貼り付けており 右側に表の一部を範囲指定した折れ線グラフを、マクロを実行して貼り付けます。 右の表の範囲を変更して、右の表だけを変更するマクロ作成したいと思っています。 左側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="全体グラフ" 右側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="グラフ1" 右側の折れ線グラフ(グラフ1)を削除して、範囲を変更した新たなグラフ(グラフ1に名前を変更)を貼り付けるマクロを作りましたが、右側のグラフが貼りついていない、最初のときに実行すると、削除するグラフが無いためにエラーがでてしまいます。 If を使用するのかなっと思っていますが、どのように入力すればいいのか分かりません。 教えて頂けないでしょうか。

  • エクセルマクロ

    横7列、縦64行が1枚の台紙(A4サイズに収まる)が横方向に20枚並んでいます。 その20枚の台紙のうち入力した分の台紙(何枚目)までを、 『印刷範囲の設定』というマクロを組みたいと思っています。 ただし台紙自体に元から文字などが入力されているので、 単純に最終入力ページと設定できません。 そこで「20枚それぞれのある特定のセル」に文字が入力がされた場合にそのセルを含む ページまでを印刷範囲として指定できないでしょうか? 特定セルの場所は 1枚目「C4」、2枚目「J4」、3枚目「Q4」、4枚目「X4」、5枚目「AE4」、6枚目「AL4」、7枚目「AS4」、 8枚目「AZ4」、9枚目「BG4」、10枚目「BN4」、11枚目「BU4」、12枚目「CB4」、13枚目「CI4」、 14枚目「CP4」、15枚目「CW4」、16枚目「DD4」、17枚目「DK4」、18枚目「DR4」、19枚目「DY4」、 20枚目「EF4」 となっており、1枚単位で考えると3列目・4行目の位置です。 ちなみに4行目には上記セル以外に元から文字が存在します。

  • 秀丸エディタのマクロのことで

    秀丸エディタ(Ver3.19)の置換で正規表現を用いても以下のことはできないと思います。 501~520までの数字を623~642に一括変換する。 そこで上記のようなことが可能なマクロを教えてもらいたいのですが。ようは置換元の範囲と置換後の範囲を指定することで、任意の数字に対して連番置換ができるマクロです。 ワードのVBAでも結構です(エクセルではダメですが)。 宜しくお願いします。

専門家に質問してみよう