VocExcel(単語帳) / VBA Tips
 
 [Key] エクセル / Excel / VBA /マクロ / コンボボックス


http://www.geocities.co.jp/SiliconValley-Bay/2717/
http://www.geocities.jp/dz02572i/index.html

<--- 戻る

コンボボックスの値をシートに戻す

サンプル ダウンロード

[コンボボックスの値をシートに戻す]







*コンボボックスの値をシートに戻して反映させます。 コツはフォームの読み込み時に各データの行番号をコンボボックスに格納しておくことです。 ここではコンボボックスの三列目に行番号を保存しています。(表示はしていません)

行番号を元に、フォームで修正したデータをシートに戻します。




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







--