| 
  サンプル ダウンロード 
 [コンボボックスの値をシートに戻す]
 
 
  
 
 
  
 
 *コンボボックスの値をシートに戻して反映させます。 コツはフォームの読み込み時に各データの行番号をコンボボックスに格納しておくことです。 ここではコンボボックスの三列目に行番号を保存しています。(表示はしていません)
 
 行番号を元に、フォームで修正したデータをシートに戻します。
 
 
 
 
 Private Sub ComboBox1_Change()
 
 '==========================
 ' 「VLookup」でデータ取得
 '==========================
 
 If IsError(Application.VLookup(ComboBox1.Text, Range("A2:B65536"), 2, False)) Then
 
 TextBox1.Text = ""
 
 Else
 TextBox1.Text = Application.VLookup(ComboBox1.Text, Range("A2:B65536"), 2, False)
 
 End If
 
 
 
 
 '==========================
 ' 「ListIndex」で取得
 '==========================
 
 Dim myIndex
 
 myIndex = ComboBox1.ListIndex
 
 If myIndex >= 0 Then
 
 TextBox2.Text = ComboBox1.List(myIndex, 1)
 Label6.Caption = ComboBox1.List(myIndex, 2) '行番号を取得
 
 
 Else
 
 TextBox2.Text = ""
 Label6.Caption = ""
 
 End If
 
 
 
 End Sub
 
 
 
 
 
 Private Sub CommandButton1_Click()
 
 Dim myRow As Long
 Dim myNum As String
 Dim myIndex
 myIndex = ComboBox1.ListIndex
 
 
 
 
 
 If myIndex >= 0 Then
 
 MsgBox "シートに保存します。"
 
 myRow = Label6.Caption
 Cells(myRow, "B") = TextBox1.Text
 
 myNum = ComboBox1.Text
 Call cmbAdd 'コンボボックスを再読込
 ComboBox1.Text = myNum
 
 Else
 
 MsgBox "IDを選択してください。"
 
 End If
 
 
 End Sub
 
 
 Private Sub CommandButton2_Click()
 
 Dim myRow As Long
 Dim myNum As String
 Dim myIndex
 myIndex = ComboBox1.ListIndex
 
 
 
 If myIndex >= 0 Then
 
 MsgBox "シートに保存します。"
 
 myRow = Label6.Caption
 Cells(myRow, "B") = TextBox2.Text
 
 myNum = ComboBox1.Text
 Call cmbAdd 'コンボボックスを再読込
 ComboBox1.Text = myNum
 
 Else
 
 MsgBox "IDを選択してください。"
 
 End If
 
 
 End Sub
 
 
 
 Private Sub UserForm_Initialize()
 
 Call cmbAdd 'コンボボックスにリストを追加
 
 End Sub
 
 
 
 Private Sub cmbAdd()
 
 'ループ処理でコンボボックスに追加
 
 Dim lstRow2 As Long
 Dim i As Long   '行番号
 Dim q As Long   'リストボックスの行番号
 
 ComboBox1.Clear 'リストボックスの値を削除しておく。
 ComboBox1.ColumnCount = 2 '2列表示
 ComboBox1.ColumnWidths = "25 pt;40 pt"  '表示する列の幅
 
 
 '======================================================
 
 lstRow2 = Cells(65536, "A").End(xlUp).Row '最終行の取得
 q = 0  'リストボックスの行番号
 
 For i = 2 To lstRow2  '2行目から最終行までリストに追加する
 
 With ComboBox1
 .AddItem
 .List(q, 0) = Cells(i, "A").Value      '1列目
 .List(q, 1) = Cells(i, "B").Value      '2列目
 .List(q, 2) = i                        '★★3列目 / シートの行番号 row 表示はしない
 
 End With
 
 q = q + 1   'リストボックスの行番号
 
 
 Next
 
 
 '======================================================
 
 End Sub
 
 
 
 
 
 
 
 
 |