エクセルVBAについて質問です。


他のコンピュータで使用できていたRight()関数ですが、コンパイルエラーが出ます。

他に、宣言(Dim *** As Integerなど)が無い変数も使えなくなったので、これはSub +++()の後にDimによる宣言を追加することで対応できました。

表現を厳密にすることを要求されているようです(エクセルバージョンの違い?)が、Right()といった関数を使用するにはどうすれば良いでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/12/01 15:42:50
  • 終了:2008/12/04 11:25:24

ベストアンサー

id:airplant No.3

airplant回答回数220ベストアンサー獲得回数492008/12/01 22:31:53

ポイント40pt

参照設定の問題とすると、他のVBA系の関数(Left, Day, Intなど)も全滅のはずですが、それはどうなのでしょう?

ちなみに、Right()は、デフォルトでは次の場所にあります(Office2003の場合)。

ライブラリそのものを間違って消してしまったということはないですよね?

ライブラリ: VBA

ライブラリのデフォルトの場所:C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VB

クラス:Strings

メンバ:Right


>他に、宣言(Dim *** As Integerなど)が無い変数も使えなくなったので

これは、#2の方がおっしゃっているように「Option Explicit」の記載有無により違って来ています(ツール→オプション→編集)。

今回エラーとなった環境では、「変数の宣言を強制にする」でソースを触り、自動的に「Option Explicit」が入ったものと思われます。


なお、変数の宣言強制は、指定したほうが後でバグが出にくく、良い効果があると思われるます。

例えば、「Option Explicit」がない場合は、変数名の打ち間違いをしても気づかず、0が代入されて処理が続行します。つまり全く別変数に扱われます。デバッグしていても中々分かりません。

しかし、「Option Explicit」がある場合は、即エラーになってくれます。

例えば、次のような場合。

    optValue = ....
    if optValeu > 100 then ' 絶対にTrueにならない

 大文字と小文字を混ぜた変数名にし、入力時は全部小文字で入れ、別な行に移ったときに一部が大文字になることを確認してタイプミスを自動判定するのが常套手段です。


 又、ご存知と思いますが、型は必須ではなく、変数を定義だけでも大丈夫です(Variantになります)。

    Dim optValue
id:ReoReo7

どうも、ありがとうございます。

ライブラリに触った覚えはないので、大丈夫だと思います。

さて、ご指摘の件ですが、DLLエラーとなり、調べたところ参照設定の

参照不可:Ref Edit Control

となっていますね・・

このエラーを何とかする方法はありませんでしょうか?

別質問にて行ってみたいと思います。

これにて質問終了させて頂きます。ありがとうございました。

2008/12/04 11:17:40

その他の回答(2件)

id:fuentebella No.1

fuentebella回答回数269ベストアンサー獲得回数302008/12/01 16:35:07

ポイント27pt

たぶん参照設定に問題があると思います。

Visual Basic Editorのツールの参照設定のチェック項目を、うまく動くパソコンとエラーになるパソコンで比べてみてください。

http://okwave.jp/qa1585038.html

も参考になります

id:ReoReo7

どうも、ありがとうございます。

2008/12/01 17:59:45
id:van-dine No.2

van-dine回答回数108ベストアンサー獲得回数112008/12/01 17:48:06

ポイント27pt

Option Explicitと書いてある行が見つかるはずです。

それを消せば、なんとかなりそうです。

id:ReoReo7

どうも、ありがとうございます。

2008/12/01 17:59:47
id:airplant No.3

airplant回答回数220ベストアンサー獲得回数492008/12/01 22:31:53ここでベストアンサー

ポイント40pt

参照設定の問題とすると、他のVBA系の関数(Left, Day, Intなど)も全滅のはずですが、それはどうなのでしょう?

ちなみに、Right()は、デフォルトでは次の場所にあります(Office2003の場合)。

ライブラリそのものを間違って消してしまったということはないですよね?

ライブラリ: VBA

ライブラリのデフォルトの場所:C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VB

クラス:Strings

メンバ:Right


>他に、宣言(Dim *** As Integerなど)が無い変数も使えなくなったので

これは、#2の方がおっしゃっているように「Option Explicit」の記載有無により違って来ています(ツール→オプション→編集)。

今回エラーとなった環境では、「変数の宣言を強制にする」でソースを触り、自動的に「Option Explicit」が入ったものと思われます。


なお、変数の宣言強制は、指定したほうが後でバグが出にくく、良い効果があると思われるます。

例えば、「Option Explicit」がない場合は、変数名の打ち間違いをしても気づかず、0が代入されて処理が続行します。つまり全く別変数に扱われます。デバッグしていても中々分かりません。

しかし、「Option Explicit」がある場合は、即エラーになってくれます。

例えば、次のような場合。

    optValue = ....
    if optValeu > 100 then ' 絶対にTrueにならない

 大文字と小文字を混ぜた変数名にし、入力時は全部小文字で入れ、別な行に移ったときに一部が大文字になることを確認してタイプミスを自動判定するのが常套手段です。


 又、ご存知と思いますが、型は必須ではなく、変数を定義だけでも大丈夫です(Variantになります)。

    Dim optValue
id:ReoReo7

どうも、ありがとうございます。

ライブラリに触った覚えはないので、大丈夫だと思います。

さて、ご指摘の件ですが、DLLエラーとなり、調べたところ参照設定の

参照不可:Ref Edit Control

となっていますね・・

このエラーを何とかする方法はありませんでしょうか?

別質問にて行ってみたいと思います。

これにて質問終了させて頂きます。ありがとうございました。

2008/12/04 11:17:40
  • id:ReoReo7
    次の質問:
    http://q.hatena.ne.jp/1228357459
  • id:airplant
    いるかありがとうございました。
    でも、、、解決していないのですね。別スレッドにもご参考までに回答書いておきました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません