A função VBA determina se uma palavra pode ser soletrado com uma coleção de letras

Você recebe uma coleção de ‘cubos’ alfabéticos. Existem vinte blocos com duas letras em cada bloco. Um alfabeto completo é garantido entre todos os lados dos blocos.


As regras são simples: uma vez que uma letra em um bloco é usada, este bloco não pode mais ser usado; a função deve ser insensível a maiúsculas e minúsculas

A coleção dos blocos:
(B O) (X K) (D Q) (C P) (N A) (G T) (R E) (T G) (Q D) (F S) (J W) (H U) (V I) (A N) (O B) (E R) (F S) (L Y) (P C) (Z M)

Código de chamada

Sub Main_ABC()
Dim Arr, i As Long

    Arr = Array("A", "barca", "WorkBook", "QUILHA", "ABCJOGO", "SQUATTER", "CONFUSO")
    For i = 0 To 6
        Debug.Print ">>> Podemos fazer a palavra "& Arr(i) &"? => " & ABC(CStr(Arr(i)))
    Next i
End Sub

Código da função

Function ABC(Palavra As String) As Boolean
Dim C As New Collection
Dim Nb As Long, N As Long
Dim b As Integer, i As Integer
Const BLOCKS As String = "B,O;X,K;D,Q;C,P;N,A;G,T;R,E;T,G;Q,D;F,S;J,W;H,U;V,I;A,N;O,B;E,R;F,S;L,Y;P,C;Z,M"

    N = Len(BLOCKS) - Len(Replace(BLOCKS, ";", ""))
    For b = 0 To N
        C.Add Split(BLOCKS, ";")(b), Split(BLOCKS, ";")(b) & b
    Next b
    N = C.Count
    Nb = N
    For b = 1 To Len(Mot)
        For i = 1 To Nb
            If i > Nb Then Exit For
            If InStr(C(i), UCase(Mid(Mot, b, 1))) <> 0 Then
                C.Remove (i)
                Nb = Nb - 1
                Exit For
            End If
        Next
    Next b
    ABC = (N = (C.Count + Len(Palavra)))
End Function

Resultado

O resultado é exibido na janela de execução. Se não for exibido no seu editor VBA, pressione, simultaneamente, as teclas Ctrl + G.
>>> Podemos fazer a palavra A ? => Verdadeiro
>>> Podemos fazer a palavra barca ? => Verdadeiro
>>> Podemos fazer a palavra WorkBook ? => Falso
>>> Podemos fazer a palavra QUILHA ? => Falso
>>> Podemos fazer a palavra ABCJOGO ? => Verdadeiro
>>> Podemos fazer a palavra SQUATTER ? => Falso
>>> Podemos fazer a palavra CONFUSO ? => Verdadeiro

Foto: © Microsoft.
Artigo original publicado por pijaku. Tradução feita por pintuda. Última modificação: 23 de fevereiro de 2018 às 04:14 por pintuda.
Este documento, intitulado 'A função VBA determina se uma palavra pode ser soletrado com uma coleção de letras', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.
VBA: como converter decimal para binário
Como inserir uma quebra de linha no Excel