私はこの問題の解決策を探してインターネットを精査しましたが、null例外が残ります。ネストされた辞書に値を追加しようとすると、基本的にSystem.NullReferenceExceptionエラーが発生します。VB.netのネストされた辞書System.NullReferenceException
ここに私のコードです。
Public Dict1 as New Dictionary(Of Integer, Dictionary(Of String, String))() 'Tried with and without()
Sub CreateDict(Length As Integer)
Dim key As Integer
Dim CmdName As String
Dim CmdValue As String
key = 0
CmdName = "UnusedCmd"
CmdValue = "NotAFolder,NotAFolder,NotAFolder,NotAFolder,NotAFolder,Read"
While key <= Length
Dim CmdDict As New Dictionary(Of String, String)
CmdDict.Add("Name", CmdName) 'Method 1 of Adding
CmdDict.Add("Command", CmdValue) 'Method 1 of Adding
'CmdDict("Name") = CmdName 'Method 2 of Adding Both seem to work as evidenced by msgbox
'CmdDict("Command") = CmdValue 'Method 2 of Adding Both seem to work as evidenced by msgbox
MsgBox(CmdDict("Name")) ' Returns UnusedCmd
MsgBox(CmdDict("Command"))' Returns NotAFolder,NotAFolder,NotAFolder,NotAFolder,NotAFolder,Read
MsgBox(key) 'Returns 1
Dict1.Add(key, CmdDict)
key = key + 1
CmdDict = Nothing 'Error Occurs whether or not this is commented out
End While
End Sub
注このコードは、私は見通しのアドインになるこのコードをreadaptしようとしていたOutlook 2016用のVBAにいた私の元のプロジェクトから適応されました。
私は「=」と「として」用語を交換しようとしていると私はまた、両方の辞書については
Dim CmdDict As Dictionary(Of String, String) = New Dictionary(Of String, String)
を試してみましたが、これは動作しませんでした。私は思うことができるすべてを試しました/助けてください。
パブリック辞書と関係がありますか?他の誰かがパブリック・ディクショナリを使っているのを見ました。彼らは解決策です。新しいものを追加することでした。そうしなければ、オブジェクトは作成されませんでした。
EDIT:
私はちょうどパブリック変数として、定期的な辞書を試してみましたが、それは同様に失敗しました。だから、ネストされていることとは関係がないようです。私は公開オブジェクトの問題を調べ続けます。
EDIT 2:
ちょうどまだ機能していないパブリック・クラスにDict1を追加しようとしました。このDict1を行った後
Public Class GlobalVariables
Public Shared Dict1 As Dictionary(Of Integer, Dictionary(Of String, String)) = New Dictionary(Of Integer, Dictionary(Of String, String))
End Class
がGlobalVariables.Dict1
EDIT 3に更新されました:
このコードは、私は私がOutlook VBAで書いたマクロに基づいて作成しておりますことをVSTOアドイン内にあります。 Visual Studio Community 2015を使用しています。The location of the code is as follows
編集4: 重複していますか?私はこれも重複した回答だと思っていましたが、私は、Create Objectをパブリック変数のPublicからSub内に移動する答えがどこにもないことはできませんでした。しかし、残りの質問は他の人たちと非常によく似ています。
そのコードはちょうどいいです...どこに例外がありますか...どの行...スタックトレースは何を言いますか? –
エラーがスローする行はDict1.Add(key、CmdDict)です。変更されても、これはVSTO内で作成されたOutlook Addin内で実行されているかわかりません – Gibbs314
これは最初の行が実行されていないことを示します... WHEREこのコードはありますか? –