|
みなさん、こんばんは。
再送です。久しぶりのランダムファイルで勘違いしてたところもあったので・・。
>の全部が分からない訳ではないんでしょ。
>自分で書いたコードを提示して、
>どこが分からないのかを書きましょう。
私もそう思います。
例えば、HANAさんの例を具体的にして、標準モジュールに
'======================================
Type db1
工事番号 As String * 5
工番2 As String * 2
発注者 As String * 36
End Type
'====================================
Sub mk_sample_file()
On Error Resume Next
Const fllen = 43
Dim flno As Long
Dim rec As db1
Dim KoujiNO As Variant
Dim kouban2 As Variant
Dim hachu As Variant
KoujiNO = Array("00001", "00010", "00030")
koubann2 = Array("01", "10", "20")
hachu = Array("宇多田ヒカル", "浜崎あゆみ", "中島美嘉")
flno = FreeFile
Kill ThisWorkbook.Path & "\db1.dat"
Open ThisWorkbook.Path & "\db1.dat" For Random As #flno Len = fllen
For idx = LBound(KoujiNO) To UBound(KoujiNO)
With rec
.工事番号 = KoujiNO(idx)
.工番2 = koubann2(idx)
.発注者 = hachu(idx)
End With
Put #flno, , rec
Next idx
Close #flno
End Sub
とすれば、レコード長=43のランダムファイルが作成されます。
これを
ユーザーフォーム(Userform1)の
コンボボックス(ComboBox1)に反映させるには
Useform1のモジュールに
'===================================================
Private Type db2
工事番号 As String * 5
工番2 As String * 2
発注者 As String * 36
End Type
'==================================================
Sub read_sample_file()
On Error Resume Next
Dim flno As Long
Dim rec As db2
Dim idx As Long
Const fllen = 43
flno = FreeFile
ComboBox1.ColumnCount = 2
Open ThisWorkbook.Path & "\db1.dat" For Random As #flno Len = fllen
For idx = 1 To LOF(flno) / fllen
Get #flno, , rec
With rec
MsgBox "工事番号 ---" & .工事番号 & vbCrLf & _
"工番2 ---" & .工番2 & vbCrLf & _
"発注者 ---" & .発注者
' 確認のため表示させました。↑実際は削除
ComboBox1.AddItem .工事番号
ComboBox1.List(idx - 1, 1) = .工番2
End With
Next
Close #flno
End Sub
'==========================================================
Private Sub UserForm_Initialize()
Call read_sample_file
End Sub
新規ブックにユーザーフォームとコードをコピーして確認してください。
但し、一度保存してから実行してください(Thisworkbook.Pathを使っているので)。
|
|