DOBON.NET どぼん!のVB道掲示板(プログラム)過去ログ

Hashtableクラスを関数の戻り値として利用するには。

100P以下なら有料回答でも可

VB.NETでHashtableクラスを関数の戻り値として
利用するにはどのようにしたらいいのでしょうか?

必要部分だけ抜き出しました。

Dim TempSheet As New Hashtable()
TempSheet = fGetTempSheet("C:\テンプレート\")


Private Function fGetTempSheet(ByVal vDir As String) As Hashtable()'ここをobjectにしてみましたがだめでした。
Dim xlBook_Master As Excel.Workbook
Dim vTempName As String
Dim TempSheet As New Hashtable()

vTempName = "test"

TempSheet.Add(vTempName, xlBook_Master.Worksheets(1))

Return TempSheet
End Function
>Private Function fGetTempSheet(ByVal vDir As String) As Hashtable()'ここをobjectにしてみましたがだめでした。

で、最後の()をとってみてください。()をつけると、Hashtableの配列を返すということになります。

またエラーは出ませんが、はじめの
>Dim TempSheet As New Hashtable()
のNewも必要ないでしょう(当然ですが、Newを取るときは最後の()も取ってください)。
どぼんさんありがとうございます。
教えてもらった通りに書き換えたところ、
しっかり動くようになりました。
下記修正後

Dim TempSheet As Hashtable
TempSheet = fGetTempSheet("C:\テンプレート\")


Private Function fGetTempSheet(ByVal vDir As String) As Hashtable
Dim xlBook_Master As Excel.Workbook
Dim vTempName As String
Dim TempSheet As New Hashtable()

vTempName = "test"

TempSheet.Add(vTempName, xlBook_Master.Worksheets(1))

Return TempSheet
End Function
戻り値がうまく参照できない?

@の部分で
追加情報 : HRESULT からの例外です : 0x800A01A8。
というエラーでとまってしまいます。

この行を、Aの部分で実行すると問題なく動きます。
MSNのページ等も読んだのですが原因がわからず悩んでいます。
お時間がありましたらお願いいたします。
Bはそれぞれどちらかで宣言


Dim TempSheet As Hashtable
Dim xlBook_New As Excel.Workbook = xl.Workbooks.AddB

TempSheet = fGetTempSheet("C:\テンプレート\")
TempSheet("test").Copy(after:=xlBook_New.Sheets(xl.Sheets.Count))@

Private Function fGetTempSheet(ByVal vDir As String) As Hashtable
Dim xlBook_New As Excel.Workbook = xl.Workbooks.AddB
Dim xlBook_Master As Excel.Workbook
Dim vTempName As String
Dim TempSheet As New Hashtable()
vTempName = "test"
TempSheet.Add(vTempName, xlBook_Master.Worksheets(1))
A

Return TempSheet
End Function

DOBON.NET | プログラミング道 | プログラミング掲示板