
VB.NETの勉強をしつつ業務開発をしております。
現在、作成したクラスをインスタンス化した際、インテリセンスが表示されず、困っております。
メソッド内で生成したインスタンスからは、インテリセンスが表示されるのですが、クラス直下で生成したインスタンスでは、インテリセンスが表示されないのです。
Namespace MyName
Public Class Class1
Public Sub test1()
Debug.Print("test1呼び出し")
End Sub
End Class
End Namespace
Public Class Form1
Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyCls.test1() ←×MyNameのインテリセンスでtest1が表示されない
Dim MyCls2 = New MyName.Class1
MyCls2.test() ←○MyNameのインテリセンスでtest1が表示
End Sub
End Class
インテリセンスは表示されなくても、エラーにはなりません。自分で打ち込めば動作するのですが、共有利用したいので、インテリセンスの説明は表示させたいのです。
インテリセンスとは?というレベルから勉強している超初心者のため、拙い言葉遣いご容赦ください。お知恵をお借りしたく、宜しくお願いします。
No.1ベストアンサー
- 回答日時:
VBのバージョンが書かれていないようですが、試された状況から推測すると
VB2010 かと思うのですが、VB.NET のように書かれると VB.NET 2002 VB.NET 2003 を指す
事になり変に誤解を招きます。
VB2005 以降は、製品名に“.NET”の名を冠さないようになっています。
因みに、現在[.NET対応のバージョン]は下記のようなものがあります。
VB10: Visual Basic 2010 / Visual Studio 2010
VB9 : Visual Basic 2008 / Visual Studio 2008
VB8 : Visual Basic 2005 / Visual Studio 2005
VB7.1:Visual Basic .NET 2003 / Visual Studio .NET 2003
VB7 : Visual Basic .NET(2002)/ Visual Studio .NET(2002)
本題ですが、結論から言いますと変数の型を宣言されていないからインテリセンス機能が働かない。
Option Strict Off の状態で使用されているのでしょうか?
それなら On で使用されるようお勧めします。(勉強のためにもなるし)
原因は、Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示
では、MyCls の変数の型が宣言されていません。
Private MyCls As New MyName.Class1 のように宣言し直して見て下さい。
>Dim MyCls2 = New MyName.Class1
こちらはローカルで宣言されていますので、VB2008 からだったかVB2010からだったかチョット
確認しておりませんが、型が書いていないと自動で型を認識するようです。
因みに下記を試して見て下さい。
Option Strict On の状態で
ローカルで
Dim i = 0 'と宣言して見て下さい。
又、Private で
Private i = 0 'と宣言して見て下さい。
又、ループ用変数等は宣言しなくても使用できるようになったりしていますが、基本は踏まえて
おいて下さい。
すみません。VBのバージョンは、Visual Basic 2008 ExpressEditionです。
VB.NETって書かないんですね。詳しく教えてくださり有難うございます!すごく勉強になりました。
ご指示のとおり、Option Strict Onでやってみました。確かにエラーになりました。
インテリセンスは出なかったものの、実装は出来ていたので、型宣言だったとは気づきませんでした。
Private MyCls As New MyName.Class1 としてみましたら、インテリセンスが出てくるようになりました。
お恥ずかしながら、Option Strict Onとしたら、他の箇所でも多数の型宣言エラーが出たので、
これを機に、プログラムを全体的に見直しいたします。
とても丁寧に教えていただき、本当に有難うございました。初心者の私でも、とても良く理解できました。感謝です! 本当に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 空白のセルを変更しようとした時(アクティブセル)に インプットボックスを5回出す インプットボックス 1 2023/03/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
非staticフィールドを参照でき...
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
インスタンスを同じ名前で作成...
-
[Visual C#] 優先される処理に...
-
変数の参照でエラーが出てしま...
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
メソッドの引数としてのthisの意味
-
インスタンスとスレッドの違い
-
エクセル(複数インスタンス)...
-
VB.NET Newしたものを変数に代...
-
下記の様に、Employeeの(クラ...
-
SetWindowsHookExで質問
-
VB6からのExcel起動について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
インスタンスを同じ名前で作成...
-
newしないインスタンス?実体化...
-
フォームの存在をチェックする方法
-
String a = "a"; と String b =...
-
C#のメモリ解放についてご教授...
-
vb.netでFAXを送信する方法
-
他のファイルの変数参照
-
Delphiでインスタンスが作成さ...
おすすめ情報