VBA Como manter uma vírgula específica após a divisão de string

1

Eu estou tentando manter uma vírgula após a divisão de string, então quando eu inserir alguns dados na célula para ser como C1 largura 2, -verter essa vírgula C8 mesclar 2 e não como a saída atual-C1 largura 2 C8 mesclar 2 Então este é o meu código:

Sub Worksheet_Change(ByVal Target As Range)


Application.EnableEvents = False
Dim BigS As String
Dim arr As Variant
Dim a As Variant


If Intersect(Range("G:G"), Target) Is Nothing Then Exit Sub
arr = Split(Target, " ")
For Each a In arr
    If IsItGood(a) Then
    MsgBox (" In cell" + Target.Address(0, 0)) & vbCrLf & a & vbCrLf + "is ok"
    Else
        MsgBox (" In cell" + Target.Address(0, 0)) & vbCrLf & a & vbCrLf + "has invalid values"
        Application.Undo
    End If

    Next a
Application.EnableEvents = True
End Sub

Por enquanto, este método split ignora todas as vírgulas, mas eu quero manter todas as vírgulas entre os 3 conjuntos de strings - C1 width 2 "aqui para ser a vírgula" C8 merge 2

    
por user3701825 30.05.2018 / 13:47

1 resposta

1

Para referência:

Pergunta anterior

o código IsItGood () era:

Public Function IsItGood(aWord As Variant) As Boolean
    Dim s As String
    s = "|"
    tmp = s & aWord & s
    patern = ""

    For i = 1 To 100
        patern = patern & s & i
    Next i
    For i = 1 To 10
        patern = patern & s & "C" & i
    Next i
    patern = patern & s & "merge|complete framed|width|border left|border right" & s

    If InStr(1, patern, tmp) > 0 Then
        IsItGood = True
    Else
        IsItGood = False
    End If

End Function

Para torná-lo "cego por vírgulas", altere:

tmp = s & aWord & s

para:

tmp = Replace(s & aWord & s, ",", "")

Quer existam ou não vírgulas, você ainda precisa de um caractere de espaço entre as palavras na frase de entrada.

    
por 30.05.2018 / 15:26