|
▼bakadeus さん:
これもあくまで、サンプルです。
新規ブックでユーザーフォームを作成し、タブ(ページ)が3つのTabStrip1とCommandButton1を配置してください。
RabStrip1の上にはTextBox1,TextBox2,TextBox3を置いてください。
フォームを表示し、各ページのTextBox1,2,3の、ページ毎に異なる値を入れてみてください。
なお、ページ上のTextBoxに値を入力した後、別のページを選択する場合は、必ずEnterで入力を確定させてください。
コマンドボタンをクリックすると3ページのそれぞれのテキストボックスに入力された値を表示します。
今回のテーマに関連づけるとすれば3人分、それぞれ項目が3つあるケースです。
【標準モジュール】
Public Type myData
data1 As String
data2 As String
data3 As String
End Type
Public arrayF(1 To 3) As myData
【ユーザーフォームモジュール】
Dim skip As Boolean
Private Sub UserForm_Initialize()
Call TextEdit
End Sub
Private Sub TabStrip1_Change()
Call TextEdit
End Sub
Private Sub TextBox1_afterupdate()
If Not skip Then arrayF(TabStrip1.Value + 1).data1 = TextBox1.Value
End Sub
Private Sub TextBox2_afterupdate()
If Not skip Then arrayF(TabStrip1.Value + 1).data2 = TextBox2.Value
End Sub
Private Sub TextBox3_afterupdate()
If Not skip Then arrayF(TabStrip1.Value + 1).data3 = TextBox3.Value
End Sub
Private Sub CommandButton1_Click()
Dim i As Long
For i = LBound(arrayF) To UBound(arrayF)
MsgBox i & "番目のページの値は" & vbLf & _
arrayF(i).data1 & vbLf & arrayF(i).data2 & vbLf & arrayF(i).data3
Next
End Sub
Private Sub TextEdit()
skip = True
TextBox1.Value = arrayF(TabStrip1.Value + 1).data1
TextBox2.Value = arrayF(TabStrip1.Value + 1).data2
TextBox3.Value = arrayF(TabStrip1.Value + 1).data3
skip = False
End Sub
|
|