Я пытаюсь заполнить поле со списком списком букв, но только теми, которые не входят в другой диапазон.
Полный список хранится в диапазоне с именем «prbCodes», и я заполняю поле со списком, используя это
For Each cClass In Range("prbCodes")
With Me.ddSelect
.AddItem Format(cClass.Value, "")
End With
Next cClass
Используемые буквы идентификатора зонда хранятся в именованном диапазоне «prbList». Как сравнить/сопоставить два диапазона, чтобы в ddSelect отображались только буквы, которые не появляются в «prbList»
Спасибо
Обновлено: Поле со списком является частью пользовательской формы, а данные хранятся на листе под названием «Данные».
Два именованных диапазона столбцов, «prbList» и «prbCodes», являются частью таблицы данных. prbCodes содержит буквы A–Z и цифры 0–9. prbList — это столбец в таблице tbl_probes, содержащий использованные буквы.
Не могли бы вы поделиться полным соответствующим кодом? Похоже, вы заполняете два столбца, поэтому код должен быть более релевантным. Пожалуйста, поделитесь формой диапазонов, т.е. если, например. prbList — это одна строка или столбец, тем более эффективный Application.Match можно использовать вместо метода Find. Немного пугает то, как вы устанавливаете (именованный) диапазон. Где он находится? На том же листе, что и другой? В той же книге, что и этот код? Пожалуйста, отредактируйте свой вопрос, добавив недостающую информацию.


Private Sub UserForm_Initialize()
ThisWorkbook.Activate
Dim rgCodes As Range: Set rgCodes = Range("prbCodes")
Dim rgList As Range: Set rgList = Range("prbList")
Dim cell As Range, Code As String
With Me.ddSelect
.Clear
.ColumnWidths = "50;50"
.ColumnCount = 2
For Each cell In rgCodes.Cells
Code = CStr(cell.Value)
If IsError(Application.Match(Code, rgList, 0)) Then
.AddItem Code
.List(.ListCount - 1, 1) = CStr(cell.Offset(0, 1).Value)
End If
Next cell
End With
End Sub
Большое спасибо за этот код, сейчас попробую :) Редактировать: работает отлично, спасибо.
Стоит посмотреть Instr()