none
Microsoft.VisualBasic名前空間の関数について RRS feed

  • 質問

  • 環境

    OS:WinXP Pro SP3
    言語:VisualBasic2008ExpressSP1

     

    これまで問題なく利用していたのですが、いつのまにやら以下の状態になっていました。

     

    症状

    windowsフォーム・ユーザコントロール内のプロシージャで
    Left・Right関数が完全修飾しないと使えなくなっていた。

     

    例)

    Msgbox(Microsoft.VisualBasic.Left("test",2)) > OK

    Msgbox(Left("test",2)) > エラー


    エラー一覧の説明:'Public Property Left() As Integer' には引数がないため、戻り値の型をインデックス化できません。
    コントロールのLeftプロパティとして認識されてしまい、インテリセンスの一覧に関数のLeftが出てこないのです。

     

    MyProject、参照タブのインポートされた名前空間では、Microsoft.VisualBasicにチェックがされています

     

    モジュール先頭で名前空間をインポートしてみましたが駄目でした。
    Imports Microsoft.VisualBasic > ×
    Imports Microsoft.VisualBasic.Strings > ×

     

    mid・msgbox関数等は、完全修飾せずに利用できています。

     

    ※標準モジュール・クラスモジュール内では、完全修飾せずともインテリセンスの一覧に表示され利用できています。

     

    どなたか助言をいただけると助かります。

    よろしくお願いします。

    2008年12月4日 7:03

回答

  •  MAHAMAN さんからの引用

    環境

    OS:WinXP Pro SP3
    言語:VisualBasic2008ExpressSP1

     

    これまで問題なく利用していたのですが、いつのまにやら以下の状態になっていました。

    以前のバージョン(Visual Basic 2005)でも同じですよね?

     

     MAHAMAN さんからの引用

    症状

    windowsフォーム・ユーザコントロール内のプロシージャで
    Left・Right関数が完全修飾しないと使えなくなっていた。

     

    例)

    Msgbox(Microsoft.VisualBasic.Left("test",2)) > OK

    Msgbox(Left("test",2)) > エラー

    ControlのLeftプロパティを参照してしまうからでしょうね。

    あまり長いのが不便であれば、エイリアスを付けるか、

    Substringを使用するとか

    2008年12月4日 7:24
  • >以前のバージョン(Visual Basic 2005)でも同じですよね?

     

    vb2005はインストールしてあるのですが、
    ほとんど利用しておりませんでした。
    で、試しに同じようにテストしてみたところ
    同じ結果になりました。

     

    >ControlのLeftプロパティを参照してしまうからでしょうね。
    >あまり長いのが不便であれば、エイリアスを付けるか、
    >Substringを使用するとか

     

    そうですね、エイリアスを付けて使うことにします。
    ありがとうございました。


    これまで同じシチュエーションに遭遇しなかったことに驚きました。
    VB6の時は、Left$とか頻繁に使ってたのに (笑

    2008年12月4日 8:19
  • SDK ドキュメントはお持ちでしょうか。もし、お持ちでなければ Microsoft のサイトから

    ダウンロードすることをお勧めします。

     

    それを見ると「Windows フォーム アプリケーションや、Left プロパティを持つ他のクラス

    で使用する場合は、Microsoft.VisualBasic.Left によって関数を完全修飾する必要があ

    ります。」と書いてあったりして、いろいろ参考になると思います。

    2008年12月4日 14:02

すべての返信

  •  MAHAMAN さんからの引用

    環境

    OS:WinXP Pro SP3
    言語:VisualBasic2008ExpressSP1

     

    これまで問題なく利用していたのですが、いつのまにやら以下の状態になっていました。

    以前のバージョン(Visual Basic 2005)でも同じですよね?

     

     MAHAMAN さんからの引用

    症状

    windowsフォーム・ユーザコントロール内のプロシージャで
    Left・Right関数が完全修飾しないと使えなくなっていた。

     

    例)

    Msgbox(Microsoft.VisualBasic.Left("test",2)) > OK

    Msgbox(Left("test",2)) > エラー

    ControlのLeftプロパティを参照してしまうからでしょうね。

    あまり長いのが不便であれば、エイリアスを付けるか、

    Substringを使用するとか

    2008年12月4日 7:24
  • >以前のバージョン(Visual Basic 2005)でも同じですよね?

     

    vb2005はインストールしてあるのですが、
    ほとんど利用しておりませんでした。
    で、試しに同じようにテストしてみたところ
    同じ結果になりました。

     

    >ControlのLeftプロパティを参照してしまうからでしょうね。
    >あまり長いのが不便であれば、エイリアスを付けるか、
    >Substringを使用するとか

     

    そうですね、エイリアスを付けて使うことにします。
    ありがとうございました。


    これまで同じシチュエーションに遭遇しなかったことに驚きました。
    VB6の時は、Left$とか頻繁に使ってたのに (笑

    2008年12月4日 8:19
  • SDK ドキュメントはお持ちでしょうか。もし、お持ちでなければ Microsoft のサイトから

    ダウンロードすることをお勧めします。

     

    それを見ると「Windows フォーム アプリケーションや、Left プロパティを持つ他のクラス

    で使用する場合は、Microsoft.VisualBasic.Left によって関数を完全修飾する必要があ

    ります。」と書いてあったりして、いろいろ参考になると思います。

    2008年12月4日 14:02