VBA влияет на другие динамические списки - PullRequest
0 голосов
/ 08 января 2019

У меня есть некоторые проблемы с электронной таблицей, над которой я работаю, так как для нее требуется два набора раскрывающихся списков, которые выглядят конфликтующими из-за конфликта 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), который был справочной формулой. Любые идеи, как я могу заставить обоих работать на одном листе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...