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.