Как вносить предложения в список проверки данных Excel при наборе текста. В моем запросе есть ограничения:
- Список предметов должен быть на другом листе и не должен быть выше в скрытых строках.
- Ввод фразы должен сузить список до всех пунктов, которые содержат фразу.
- Поиск должен выполняться без учета регистра.
Таким образом, после ввода am
мы должны предположить гипотетическое предложение выбрать из Amelia
, Camila
, Samantha
, при условии, что имена этих девушек есть в списке предметов.
Я нашел хорошее решение здесь , однако оно не фильтрует элементы с предложением contains
, а begins with
. Здесь я кратко изложу предложенное решение.
- Вставляем поле со списком (элемент управления ActiveX) на лист.
Щелкните правой кнопкой мыши имя листа> Показать код> и вставьте код VBA в редактор 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("TempCombo")
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.TempCombo.List = xArr
End If
.LinkedCell = Target.Address
End With
xCombox.Activate
Me.TempCombo.DropDown
End If
End Sub
Private Sub TempCombo_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
Я не смог найти способ изменить параметр поиска с «начинается с» на contains
.
До сих пор задавались вопросы об автозаполнении или автозаполнении в списке проверки.
Проверка данных Excel с предложениями / автозаполнение
Excel 2010: как использовать автозаполнение в списке проверки
Но ни один из них не содержал ответов, которые бы удовлетворяли наложенным мною ограничениям.
Тестовый файл для скачивания здесь .