Задача выглядит так:

Создайте форму пользователя со списком, двумя полями со списком и кнопкой команды. Список должен быть заполнен строчными символами (только ASCII 97-122) из текста в порядке возрастания, и каждый символ должен появляться только один раз.

Я очень новичок в VBA и все еще пытаюсь понять менталитет программирования, но, к сожалению, экзамены не будут ждать меня. Они такие безжалостные.

Я думал об использовании функции Asc(), чтобы заполнить список, и я получил базовое представление об итерации For, но я чувствую, что мне понадобится выбор If в итерации For в итерации For, и это так за пределами моего понимания.

Что касается остальной части задачи: ComboBox1 содержит строковые значения «Red, Blue, Black», ComboBox2 содержит числа «0, 1, 2», и командная кнопка должна сделать это: сама кнопка может быть активной, только если в ListBox. Если это пройдет, он должен проверить, какой цвет выбран в ComboBox1 и какой номер в ComboBox2. затем следует проверить текст в Word на наличие выбранной буквы и закрасить каждое слово, содержащее количество выбранного символа в списке.

Английский не мой родной язык, так что вот пример:

This is a test sentence.

Listbox char selected: e
ComboBox1: Red
ComboBox2: 1
The result should be the "test" word being red.

ComboBox2: 2
The result should be the "sentence" word being red.

ComboBox2: 0
The result should be the "This" "is" "a" words being red.

Мой экзамен на следующей неделе, и я действительно застрял, поэтому, если бы кто-нибудь мог дать мне самый простой (и самый короткий, если возможно) код для этого, я был бы очень благодарен, и это помогло бы мне МНОГО. Заранее спасибо!

Вот что я написал до сих пор:

Private Sub UserForm_Initalize()

With UserForm1.ComboBox1
.Additem "Red"
.Additem "Blue"
.Additem "Black"
End With

With UserForm1.Combobox2
.Additem "0"
.Additem "1"
.Additem "2"
End With

For i = 1 To ActiveDocument.Characters.Count
letter = ActiveDocument.Characters(i)
If letter > "Z" Then
ListBox1.Additem (Trim(letter))
db = db + 1
End If
Next

'Ascending order
ReDim temp(ListBox1.ListCount)
For r = 1 To ListBox1.ListCount
ListBox1.ListIndex = r - 1
temp(r) = ListBox1.Text
Next r

0