Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


14430 / 76738 ←次へ | 前へ→

【67804】Re:もっと簡単にできないでしょうか?
発言  UO3  - 11/1/10(月) 18:28 -

引用なし
パスワード
   ▼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

2 hits

【67778】もっと簡単にできないでしょうか? bakadeus 11/1/7(金) 19:50 質問
【67782】Re:もっと簡単にできないでしょうか? かみちゃん 11/1/7(金) 23:18 発言
【67787】Re:もっと簡単にできないでしょうか? bakadeus 11/1/8(土) 14:55 発言
【67790】Re:もっと簡単にできないでしょうか? かみちゃん 11/1/8(土) 17:01 発言
【67799】Re:もっと簡単にできないでしょうか? bakadeus 11/1/10(月) 14:40 発言
【67791】Re:もっと簡単にできないでしょうか? UO3 11/1/8(土) 17:42 発言
【67798】Re:もっと簡単にできないでしょうか? bakadeus 11/1/10(月) 14:16 発言
【67800】Re:もっと簡単にできないでしょうか? neptune 11/1/10(月) 14:58 発言
【67804】Re:もっと簡単にできないでしょうか? UO3 11/1/10(月) 18:28 発言
【67908】Re:もっと簡単にできないでしょうか? bakadeus 11/1/15(土) 17:46 お礼

14430 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free