VBA影响其他动态列表

时间:2019-01-08 09:04:27

标签: excel vba

我正在处理的电子表格存在一些问题,因为它需要两组下拉列表,这些下拉列表似乎由于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),这是参考公式。关于如何使两者在同一张纸上工作的任何想法。

0 个答案:

没有答案