VBA Porównaj ciągi – StrComp

W VBA możesz porównać dwa ciągi za pomocą StrComp funkcjonować. W tym samouczku dowiesz się, jak korzystać z tej funkcji z różnymi metodami porównawczymi.

Jeśli chcesz dowiedzieć się, jak używać operatora podobnego do VBA do porównywania niedokładnych dopasowań, kliknij tutaj: Operator podobny do VBA.

Jeśli chcesz dowiedzieć się, jak korzystać z operatorów porównania, kliknij tutaj: Operatory porównania VBA - nierówne i więcej

Używanie funkcji StrComp do porównywania dwóch ciągów

ten StrComp funkcja przyjmuje jako argumenty dwa ciągi znaków i metodę porównania. Istnieją 3 metody porównania:

  • vbBinaryCompare - porównuje dwa ciągi binarne (z uwzględnieniem wielkości liter);
  • vbTextPorównaj - porównuje dwa ciągi jako teksty (bez uwzględniania wielkości liter);
  • vbDatabasePorównaj - ta metoda jest dostępna tylko w Microsoft Access, a nie w VBA.

Domyślnie funkcja używa metody binarnej. Jeśli pominiemy ten argument, w funkcji będzie rozróżniana wielkość liter.

Funkcja zwraca następujące wyniki:

  • 0 - jeśli ciągi są równe;
  • -1 - jeśli łańcuch 1 jest mniejszy niż łańcuch 2;
  • 1 - jeśli łańcuch 1 jest większy niż łańcuch 2;
  • Null - jeśli jeden z ciągów jest pusty.

Oto przykładowy kod:

123 Dim intResult jako liczba całkowitaintResult = StrComp("Komputer", "Komputer")

W tym przykładzie chcemy sprawdzić, czy stringi "Komputer" oraz "Komputer" są równe, przy użyciu domyślnej metody porównania (binarnej). Wynik funkcji jest w intWynik zmienny. Jak widać na obrazku, oba ciągi są równe, dlatego intWynik ma wartość 0.

Rysunek 1. Wykorzystanie funkcji StrComp metodą binarną w VBA

Używanie funkcji StrComp z metodą binarną i tekstową

Zobaczysz teraz różnicę między używaniem metody binarnej a tekstowej. Metoda binarna ma liczbę binarną dla każdego znaku, więc wielkie i małe litery to różne znaki w tej metodzie. Z drugiej strony metoda tekstowa traktuje „S” i „s” jako te same litery. Jeśli chcesz, aby funkcja nie uwzględniała wielkości liter, musisz ustawić trzeci argument na vbBinaryCompare. Oto kod:

123456 Dim intResult1 jako liczba całkowitaDim intResult2 jako liczba całkowitaintResult1 = StrComp("Komputer", "Komputer")intResult2 = StrComp("Komputer", "Komputer", vbTextCompare)

Chcemy porównać ciągi "Komputer" oraz "Komputer", przy użyciu obu metod.

W zmiennej intWynik1, otrzymamy wartość metodą binarną, natomiast intWynik2 otrzyma wartość metodą tekstową. Możesz zobaczyć wartości tych dwóch zmiennych:

Rysunek 2. Korzystanie z funkcji StrComp metodą binarną i tekstową

Wartość intWynik1 wynosi 1, co oznacza, że ​​dwa ciągi znaków są różne dla metody binarnej. W przypadku metody tekstowej te dwa ciągi są sobie równe, więc wartość intWynik2 wynosi 0.

wave wave wave wave wave