Met VBA kunt u de logische operatoren gebruiken En, Of, Niet, Xor waarden te vergelijken. De operators worden als "Booleaans" beschouwd, wat betekent dat ze als resultaat True of False retourneren.
Als je wilt leren hoe je strings kunt vergelijken, klik dan hier: VBA Compare Strings - StrComp
Als u wilt leren hoe u vergelijkingsoperatoren kunt gebruiken, klik dan hier: VBA-vergelijkingsoperators - niet gelijk aan & meer
De en logische operator gebruiken
De En logische operator vergelijkt twee of meer voorwaarden. Als alle voorwaarden waar zijn, retourneert de operator True. Als ten minste één van de voorwaarden niet waar is, retourneert de operator False. Hier is een voorbeeld:
123456789101112 | Dim intA als geheel getalDim intB als geheel getalDim blnResultaat als BooleaansintA = 5intB = 5Als intA = 5 en intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
In dit voorbeeld willen we controleren of beide intA en intB zijn gelijk aan 5. Als dit waar is, is de waarde van Boolean blnResultaat zal Waar zijn, anders zal het Onwaar zijn.
Eerst stellen we waarden in van intA en intB tot 5:
12 | intA = 5intB = 5 |
Daarna gebruiken we de En operator in de If-instructie om te controleren of de waarden gelijk zijn aan 5:
12345 | Als intA = 5 en intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
Aangezien beide variabelen gelijk zijn aan 5, is de blnResultaat geeft waar terug:
Afbeelding 1. De logische operator And gebruiken in VBA
De of logische operator gebruiken
De Of logische operator vergelijkt twee of meer voorwaarden. Als ten minste één van de voorwaarden waar is, wordt True geretourneerd. Als geen van de voorwaarden waar is, retourneert de operator False. Hier is de code voor het voorbeeld:
123456789101112 | Dim intA als geheel getalDim intB als geheel getalDim blnResultaat als BooleaansintA = 5intB = 10Als intA = 5 Of intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
In dit voorbeeld willen we controleren of beide intA is gelijk aan 5. of intB is gelijk aan 10. Als een van deze voorwaarden waar is, is de waarde van Boolean blnResultaat zal Waar zijn, anders zal het Onwaar zijn.
Eerst stellen we de waarde van intA tot 5 en intB tot 10:
12 | intA = 5intB = 10 |
Daarna gebruiken we de Of operator in de If-instructie om te controleren of een van de waarden gelijk is aan 5:
12345 | Als intA = 5 Of intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
Als intA waarde is 5, de blnResultaat geeft waar terug:
Afbeelding 2. De logische operator Of gebruiken in VBA
De niet-logische operator gebruiken
De Niet logische operator controleert een of meer voorwaarden. Als de voorwaarden waar zijn, retourneert de operator False. Anders wordt True geretourneerd. Hier is de code voor het voorbeeld:
12345678910 | Dim intA als geheel getalDim blnResultaat als BooleaansintA = 5Zo niet (intA = 6) DanblnResult = WaarAndersblnResult = OnwaarStop als |
In dit voorbeeld willen we controleren of de waarde van intA is niet gelijk aan 6. Als intA is anders dan 6, de waarde van Boolean blnResultaat zal Waar zijn, anders zal het Onwaar zijn.
Eerst stellen we de waarde van intA tot 5:
1 | intA = 5 |
Daarna gebruiken we de Not-operator in het If-statement om te controleren of de waarde van intA anders is dan 6:
12345 | Zo niet (intA = 6) DanblnResult = WaarAndersblnResult = OnwaarStop als |
Als intA waarde is 5, de blnResultaat geeft waar terug:
Afbeelding 3. De operator Niet logisch gebruiken in VBA
De Xor logische operator gebruiken
De Xor logische operator vergelijkt twee of meer voorwaarden. Als precies een van de voorwaarden waar is, wordt True geretourneerd. Als geen van de voorwaarden waar is, of meer dan één waar is, wordt False geretourneerd. Hier is de code voor het voorbeeld:
123456789101112 | Dim intA als geheel getalDim intB als geheel getalDim blnResultaat als BooleaansintA = 5intB = 10Als intA = 5 Xor intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
In dit voorbeeld willen we controleren of precies één van de waarden (intA of IntB) gelijk is aan 5. Als slechts één voorwaarde waar is, is de waarde van Boolean blnResultaat zal Waar zijn, anders zal het Onwaar zijn.
Eerst stellen we de waarde van intA tot 5 en intB tot 10:
12 | intA = 5intB = 10 |
Daarna gebruiken we de Of operator in de If-instructie om te controleren of een van de waarden gelijk is aan 5:
12345 | Als intA = 5 Xor intB = 5 DanblnResult = WaarAndersblnResult = OnwaarStop als |
Als intA waarde is 5 en intB is 10, de blnResultaat geeft waar terug:
Afbeelding 4. De logische operator Xor gebruiken in VBA
Is operator
De Is-operator test of twee objectvariabelen hetzelfde object opslaan.
Laten we een voorbeeld bekijken. Hier zullen we twee werkbladen toewijzen aan werkbladobjecten rng1 en rng2, testen of de twee werkbladobjecten hetzelfde werkblad opslaan:
12345678910111213 | Sub CompareObjects()Dim ws1 als werkblad, ws2 als werkbladStel ws1 = Vellen ("Blad1") inStel ws2 = Vellen ("Blad2") inAls ws1 ws2 is, danMsgBox "Dezelfde WS"AndersMsgBox "Verschillende WS'en"Stop alsEinde sub |
Natuurlijk zijn de werkbladobjecten niet hetzelfde, dus "Verschillende WS's" wordt geretourneerd.
Like-operator
De Like Operator kan twee strings vergelijken voor onnauwkeurige overeenkomsten. In dit voorbeeld wordt getest of een tekenreeks begint met "Mr."
1234567891011121314 | Sub LikeDemo()Dim strName As StringDim blnResultaat als BooleaansstrName = "Meneer Michael James"Als strName Like "Mr*" DanblnResult = WaarAndersblnResult = OnwaarStop alsEinde sub |