|
例えば、Sheet1にComboBoxが有り、Sheet2のA1からListが在る場合
Sheet1のコードモジュールに
Option Explicit
Private Sub ComboBox1_Change()
Dim lngRowEnd As Long
Dim lngRow As Long
If ComboBox1.ListIndex = -1 Then
Exit Sub
End If
'最終行位置を取得
lngRowEnd = Me.Cells(Rows.Count, 1).End(xlUp).Row
If IsEmpty(Me.Cells(lngRowEnd, 1)) Then
lngRowEnd = 1
Else
lngRowEnd = lngRowEnd + 1
End If
'転記元行位置を取得
'※ComboBoxのListIndexが転記元Listの先頭行からの行Offsetを示す
'※因って、ListIndexに転記元Listの先頭行行位置を加算すれば転記Listの行が解る
lngRow = ComboBox1.ListIndex + 1
'転記(値の場合)
With Worksheets("Sheet2")
Me.Cells(lngRowEnd, 1).Value = .Cells(lngRow, 1)
Me.Cells(lngRowEnd, 2).Value = .Cells(lngRow, 2)
Me.Cells(lngRowEnd, 3).Value = .Cells(lngRow, 3)
End With
'転記(Copyの場合)
' Worksheets("Sheet2").Cells(lngRow, 1).Resize(, 3).Copy _
Destination:=Me.Cells(lngRowEnd, 1)
End Sub
Private Sub Worksheet_Activate()
'Sheet1のComboBoxにSheet2の先頭列をListとして設定
Worksheets("Sheet1").ComboBox1.List _
= Worksheets("Sheet2").UsedRange.Resize(, 1).Value
End Sub
|
|