Jak używać substytutu w vba (z przykładem)


Możesz użyć metody Substitute() w VBA, aby zastąpić wszystkie wystąpienia określonego tekstu w ciągu nowym tekstem.

Ta metoda wykorzystuje następującą podstawową składnię:

Zastępca (tekst, stary_tekst, nowy_tekst, numer_instancji)

Złoto:

  • Tekst : tekst, w którym chcesz zastąpić znaki
  • Stary_tekst : Tekst do zastąpienia
  • Nowy_tekst : Tekst, który ma zostać użyty jako zamiennik
  • Instance_num ( opcjonalnie ) : które wystąpienie starego tekstu zastąpić. Jeśli nie określono żadnego, wszystkie wystąpienia starego tekstu zostaną zastąpione.

Poniższe przykłady pokazują, jak zastosować tę metodę w praktyce.

Przykład: Jak używać substytutu w VBA

Załóżmy, że mamy następującą listę wyrażeń w Excelu:

Załóżmy, że zamiast tego chcemy zastąpić każdą spację w każdej komórce przecinkiem.

W tym celu możemy utworzyć następujące makro:

 Sub SubstituteText()

Dim rng As Range, cell As Range
Set rng = Range(" A2:A9 ")

For Each cell In rng
    cell = WorksheetFunction.Substitute(cell, " ", ",")
Next
    
End Sub

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Zauważ, że każda spacja w każdej komórce w kolumnie A została zastąpiona przecinkiem.

Zauważ, że możemy również użyć następującej składni, aby zastąpić każdą spację niczym:

 Sub SubstituteText()

Dim rng As Range, cell As Range
Set rng = Range(" A2:A9 ")

For Each cell In rng
    cell = WorksheetFunction.Substitute(cell, " ", "")
Next
    
End Sub

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Zauważ, że każda spacja w każdej komórce w kolumnie A została zastąpiona niczym.

Innymi słowy, usunęliśmy każdą spację z każdej komórki w kolumnie A.

Uwaga : Pełną dokumentację metody VBA Substitute znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania przy użyciu języka VBA:

VBA: Jak liczyć wystąpienia znaków w ciągu
VBA: jak sprawdzić, czy ciąg zawiera inny ciąg
VBA: Jak liczyć komórki zawierające określony tekst

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *