我正在处理的电子表格存在一些问题,因为它需要两组下拉列表,这些下拉列表似乎由于VBA冲突而发生冲突。 一个下拉列表是一个2列相互依赖的动态列表(即,如果您选择一个水果,另一个则为您提供了水果列表),这个方法很好用,直到我使用以下VBA代码在另一列中的自动完成组合框中添加了>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Update by Extendoffice: 2018/9/21
Dim xCombox As OLEObject
Dim xStr As String
Dim xWs As Worksheet
Dim xArr
Set xWs = Application.ActiveSheet
On Error Resume Next
Set xCombox = xWs.OLEObjects("Tempcombo1")
With xCombox
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
If Target.Validation.Type = 3 Then
Target.Validation.InCellDropdown = False
Cancel = True
xStr = Target.Validation.Formula1
xStr = Right(xStr, Len(xStr) - 1)
If xStr = "" Then Exit Sub
With xCombox
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = xStr
If .ListFillRange = "" Then
xArr = Split(xStr, ",")
Me.Tempcombo1.List = xArr
End If
.LinkedCell = Target.Address
End With
xCombox.Activate
Me.Tempcombo1.DropDown
End If
End Sub
Private Sub Tempcombo1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 9
Application.ActiveCell.Offset(0, 1).Activate
Case 13
Application.ActiveCell.Offset(1, 0).Activate
End Select
End Sub
我需要它作为一种具有一致的命名约定的简便方法(正如我们在此字段中所报告的那样),但是有将近20000个客户代码-添加了自动填充名称。
这有效,但是在此过程中,我的依存字段会停止在同一张纸上。第一个列表框工作正常,但是从属列表显示=indirect(G1)
,这是参考公式。关于如何使两者在同一张纸上工作的任何想法。