Como preencher ListBox com caracteres (somente inglês abc minúsculo) do texto real no Word?

0

A tarefa é assim:

Create a userform with a listbox, two combo boxes and a command button. The listbox should be filled up with lower case characters (ASCII 97-122 only) from the text, in ascending order and every character should appear only once.

Sou muito novo no VBA e ainda estou tentando descobrir a mentalidade por trás da programação, mas infelizmente os exames não vão me esperar. Eles são implacáveis assim.

Eu estava pensando em usar a função Asc () para preencher a caixa de listagem e consegui um controle básico na iteração For, mas sinto que precisarei de uma seleção If dentro de uma iteração dentro de uma iteração. e isso está muito além do meu entendimento.

Quanto ao resto da tarefa: ComboBox1 contém valores de string "Vermelho, Azul, Preto", ComboBox2 contém números "0, 1, 2" e o botão de comando deve fazer isso: o botão em si só pode estar ativo se houver alguma coisa selecionado na caixa de listagem. Se isso passar, deve verificar qual cor está selecionada no ComboBox1 e qual número está no ComboBox2. então deve verificar o texto no Word para a letra selecionada e colorir cada palavra que contenha a quantidade do caractere selecionado na caixa de listagem.

O inglês não é minha língua nativa, então aqui está um exemplo:

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.

Meu exame é na próxima semana, e eu estou realmente presa, então se alguém puder me dar o código mais simples (e mais curto possível) para isso eu ficaria muito grato, e isso me ajudaria MUITO. Obrigado antecipadamente!

Aqui está o que eu escrevi até agora:

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
    
por Dercsenyi Laszlo 06.01.2016 / 10:13

0 respostas