我们目前在 Excel 工作簿中有一些 VB 代码,它允许多次选择数据验证(列表下拉列表)选项,然后对于从列表中选择的每个下拉项目,它在行尾输出选项,一个选项每列。
即:从下拉列表中选择 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,而不是重复所选项目的名称。
如果有人可以建议我们需要在上面的代码中修改什么,将不胜感激。