現在、Excel ワークブックにいくつかの VB コードがあります。これにより、データ検証 (リスト ドロップダウン) オプションを複数選択できるようになり、リストから選択されたドロップダウン項目ごとに、行の最後に 1 つのオプションが出力されます。列ごと。
つまり、ドロップダウン リストから Apples、Bananas、および Cherries を選択すると、Apples | バナナ | 最初のセルが空の行の末尾にあるチェリー (| は列区切り記号)。
このためのコードは次のとおりです。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exitHandler
Dim rngDV As Range
Dim iCol As Integer
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
If Target.Column = 3 Then
If Target.Value = "" Then GoTo exitHandler
If Target.Validation.Value = True Then
iCol = Cells(Target.Row, Columns.Count).End(xlToLeft).Column + 1
Cells(Target.Row, iCol).Value = Target.Value
Else
MsgBox "Invalid entry"
Target.Activate
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub
ただし、この VB コードで変更したいのは、選択されたデータ検証で行の最後のセルを埋めることです。列見出しがドロップダウンから選択されたオプションと一致する列の下のセルを埋めたいと思います。
つまり、ドロップダウンで選択されたリンゴは、「リンゴ」というラベルの付いた列の下にあるその行のセルを埋めます。ドロップダウンで選択されたチェリーは、「チェリー」とラベル付けされた列の下のその行のセルを埋めます。理想的には、選択したアイテムの名前を繰り返すのではなく、そのセルに色を付けるか、そこに X を入れます。
上記のコードで何を変更する必要があるかについて誰かがアドバイスできる場合は、大歓迎です。