Sub UserForm_InitializeCall()
'Dim dicTmp As Object
Dim VntTmp As Variant
'Dim VntV As Variant
Dim VntArry(2, 3) As Variant
VntArry(0, 0) = 10
VntArry(0, 1) = "厳美町○○"
VntArry(0, 2) = "鈴木"
VntArry(0, 3) = "39-1234"
VntArry(1, 0) = 20
VntArry(1, 1) = "厳美町△○"
VntArry(1, 2) = "佐藤"
VntArry(1, 3) = "39-2345"
VntArry(2, 0) = 30
VntArry(2, 1) = "厳美町○△"
VntArry(2, 2) = "佐々木"
VntArry(2, 3) = "39-3456"
'Set dicTmp = CreateObject("Scripting.Dictionary") 'ディクショナリーを使わないと要らないでしょう。
'With Worksheets("生産者")
' VntTmp = .Range("A2", .Range("D65536").End(xlUp)).Value
'End With
'If Not IsArray(VntTmp) Then 'ここから3行は普通は必要ないようです。
' VntTmp = Array(VntTmp) '上の3行でリストの元を作成してる場合必要ないようです。
'End If
'For Each VntV In VntTmp 'この場合のように隙間が無いワークシートから表を作る場合は必要ないようです。
' On Error Resume Next
' dicTmp.Add VntV, Empty
' On Error GoTo 0
'Next
With 農家選択.ListBox1
'.List = VntTmp
.List = VntArry
.ColumnWidths = "30;150;100;20"
.ColumnCount = 4
End With
'Set dicTmp = Nothing 'ディクショナリーを使わないと要らないでしょう。
農家選択.Show
End Sub
ワークシートからデータを取り込む場合は、最初の方ですね。でも2次元配列と形式が
似てるので、配列から設定することもありそうですよね。よく分からないのが今はコメントに
してますが、VntTmpが2次元配列と同等と言うことです。だったら同じように添え字で
アクセスできるんだろうか?