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