...No meu caso o campo teria que ter 4 conteúdos! Ficaria então: "If Plan1.Range("B3") Like "[!:]*:*:*:*[!:]" Then" para checar se tem 4 conteúdos, sem dois pontos nem no começo e nem no fim, certo? No caso ela me atende bem, já que se a pessoa acabar preenchendo somente 1,2 ou 3 conteúdos, já daria erro!
Isso mesmo, poderia usar assim que já solucionaria o problema.
Poderia exemplificar esse UBound só para aprendizado?...
Vamos exagerar supondo que vc quisesse que o usuário sempre entrasse com, digamos, 20 valores. Então, ao invés de encher de asterisco-dois-pontos, vc testaria usando somente a validação inicial para um par, "[!:]*:*[!:]" como anteriormente e, depois da array ter sido preenchido, verificaria como foi a "colheita" através do UBound.
UBound significa Upper Bound ou seja, é limite superior da matriz.
Por exemplo, numa matriz:
X(0) = "a"
X(1) = "B"
X(2) = "x"
UBound(X) retornaria 2 ( X(2) é o último/maior índice). Como ela começou em 0, então a matriz tem UBound(X)+1 elementos, ou seja 2 + 1 = 3 elementos.
Então no exemplo que citei para testar se foram entrados exatamente 20 valores, vc usaria após a linha que fez o Split, por exemplo:
If UBound(Patch_split) < > 19 Then MsgBox "Entre 20 Valores separados por :" etc etc etc
Lembre-se que matrizes formadas por Split sempre começam em 0 (o LBound = Lower Bound é zero) por isso soma-se 1 para saber quantos elementos têm.
Postado : 07/03/2018 5:37 am