Come tagliare o dividere il nome della variabile in VBA Word
Domanda
Ho una variabile come questa:
var = "word1 (should be replaced by word1)"
.
Ho bisogno di ottenere Word1 da solo ea volte può essere una parola (s) ma avrà sempre (*) dopo di esso.Qualsiasi modo per eliminare il testo tra i segni (), quindi rimuovere il (), quindi rimuovere qualsiasi spazio (s) dopo l'ultima parola?
Non sono sicuro di alcun modo per farlo.
Soluzione
Il più semplice sarebbe:
var = Trim(Mid(var, 1, InStr(var, "(") - 1))
.
InStr
restituisce l'indice della prima occorrenza di "(". Sottotrai 1 per scontare la posizione tenuta dal "(".
Mid
taglia la stringa dal primo carattere in posizione 1, all'indice restituito da InStr
.
Allora Trim
per rimuovere gli spazi di trascinamento.
Altri suggerimenti
Ti piace questo?
Sub Sample()
Dim sVar As String
Dim MyAr() As String
sVar = "word1 (should be replaced by word1)"
MyAr = Split(sVar, "(")
Debug.Print MyAr(0)
End Sub
.
Modifica
Il codice sopra può essere accorciato ulteriormente
.Sub Sample()
Dim sVar As String
sVar = "word1 (should be replaced by word1)"
Debug.Print Split(sVar, "(")(0)
End Sub
Utilizzerei la funzione divisa.
arrayVar2 = split(var, "(" )
.
Avrai ora un array con 2 elementi.
Dividere il secondo elemento
arrayVar3 = split( arrayVar2[1], ")" )
.
Allora partecipare:
out = arrayVar2[0] & arrayVar3[1]
.
che funzionerà finché c'è solo un singolo set di staffe nella stringa.
Il modo alternativo è utilizzare la libreria di espressioni regolari, ma questa è una risposta più lunga.Non sarebbe il più efficace ma sarebbe meglio se avesse bisogno di gestire stringhe più complesse.
.
Aggiornamento: sono andato un po 'oltre la domanda forse richiesti.La mia soluzione assicura che il testo bracketed venga rimosso: qualsiasi testo dopo il mantenimento del testo tra parentesi.