下記のサンプルコードでVB2003のときは警告が出なかったのですが、VB2008では警告が出ます。(注!インデントに全角スペース使用)
Private aryNames(5) As String
Private Enum enmItem As Integer
eName1 = 0
eName2
eName3
End Enum
Private Sub Form1_Load(…
Dim i As Integer
Dim en As enmItem
'列挙を使って代入する
Item(en.eName2) = "DATA2"
Item(en.eName3) = "DATA3"
Item(en.eName1) = "DATA1"
'リストボックスで確認
For i = 0 To 2
ListBox1.Items.Add(aryNames(i))
Next
End Sub
Private Property Item(ByVal idx As Integer) As String
Get
Return aryNames(idx)
End Get
Set(ByVal Value As String)
aryNames(idx) = Value
End Set
End Property
警告
使用されないローカル変数'en'です。
インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子にされた型へのアクセスです。正規の式は評価されません。
いちおう警告だけで期待通りの動きはするのですが、そんなに不正なコーディングでもないのに警告がでるのはうっとうしいです。
かといて警告オプション・・・
未使用のローカル変数 なし
共有メンバにアクセスするインスタンス変数 なし
・・・とするのも何だかなあ~ て感じです。
これは、安全なコーディングのため仕様が変わったせいなのでしょうか。 警告オプションをそのままに、上記の警告が出ないようにできないものでしょうか。
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
根本的な話として、変数 en は不要です。
列挙体の内容を使用する際に、そのインスタンスは不要です。
列挙体は、ある意味 定数みたいなものなので。
プロパティ定義の引数とかで使用する場合は、変数としての定義は
必要ですが。
> Dim en As enmItem
の行を消して、
> Item(en.eName2) = "DATA2"
> Item(en.eName3) = "DATA3"
> Item(en.eName1) = "DATA1"
を、
Item(enmItem.eName2) = "DATA2"
Item(enmItem.eName3) = "DATA3"
Item(enmItem.eName1) = "DATA1"
に変更してみてください。
少なくともVS2005では、これで警告が出なくなります。
すばやい回答ありがとうございます。
>そのインスタンスは不要です。
さっそくソースを変更したら、警告はでなくなりました。
ところで、列挙をインスタンス化した目的は長い名前を短くしたかったこともありました。
実際にはこんな感じになりました。
mSpec.Item(enmMySpecItemDat.eDataName) = Me.tbxDataName.Text
mSpec.Item(enmMySpecItemDat.eWorkName) = Me.tbxWorkName.Text
...
まあ、「コピペ」するのでそんな手間でもないんですが~。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
フォームのCheck boxとOLEObjec...
-
String a = "a"; と String b =...
-
「インスタンス」の意味をわか...
-
SQLを連続発行する時の正しい(?...
-
カンマ区切りの数値文字列を数...
-
スレッドセーフについて
-
C#のメモリ解放についてご教授...
-
外部ライブラリの動的参照によ...
-
複数の変数を宣言する時、同時...
-
生成したインスタンスを削除す...
-
文字列を日付に変換でParseExce...
-
private static という変数の修飾
-
C# のインスタンスの破棄
-
C# インスタンスの破棄
-
エクセルVBAで、条件に一致する...
-
「エンクロージング型」と「外...
-
EXCEL VBAにて動的にCheckBOXを...
-
同じクラスにならない確率を教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報