Einmal #sauber #vergleichen

Sie wollen, dass katharina in Ihrem #VBA-#Modul immer gleich wie KathaRina betrachtet wird (ein #Vergleich also True ergibt), das haben wir geklärt. Aber dann wollen Sie eine #Ausnahme machen, und in einem einzigen Fall wollen Sie #Groß- und #Kleinschreibung im Vergleich berücksichtigen.

Benutzen Sie die StrComp Funktion mit der vbBinaryCompare Option:

StrComp(string1, string2, Vergleichsoption)
  • StrComp liefert
  • -1, wenn String1 kleiner ist als String2
  • 0, wenn String1 gleich ist wie String2
  • 1, wenn String1 größer ist als String2

Und dabei wird die Vergleichsoption berücksichtigt:

  • vbBinaryCompare: es wird die Groß- und Kleinschreibung berücksichtigt, katharina ist nicht dasselbe wie KathaRina
  • vbTextCompare: Groß- und Kleinschreibung sind egal
  • vbUseCompareOption: keine spezifische Einstellung, sondern es wird so verglichen, wie Option Compare vorgibt
Veröffentlicht unter Access, Excel, Outlook, PowerPoint, Publisher, VBA, Word | Verschlagwortet mit , , , , , , , , , , , | Hinterlasse einen Kommentar

richtig #vergleichen (nicht auf #Geizhals, sondern in #VBA)

katharina = KathaRina, oder auch nicht: Wenn Sie #Zeichenketten #vergleichen, ist das Ergebnis bei gleichem Code und gleichen Werten nicht immer dasselbe. Woher kommt das?

Option Compare – die geben Sie am Beginn eines Moduls an – bestimmt, ob Groß- und Kleinschreibung beim Vergleich beachtet werden oder nicht.

In Access ist die Standardeinstellung die folgende:

Option Compare Database

Damit werden Zeichenfolgenvergleiche basierend auf der Sortierreihenfolge durchgeführt werden, die durch die Gebiets-ID der Datenbank bestimmt wird, in der die Zeichenfolgenvergleiche durchgeführt werden. (Standard: Groß- und Kleinschreibung wird ignoriert, also ist bei einem Vergleich katharina dasselbe wir KathaRina.

Das lässt sich auch erzwingen:

Option Compare Text

A ist also dasselbe wie a, und beide sind kleiner als B.

Wenn Sie das so nicht akzeptieren wollen, dann müssen Sie in dem Modul, in dem Sie einen differenzierenden Vergleich brauchen, folgendes schreiben:

Option Compare Binary

Achtung: das gilt für alle Vergleiche im entsprechenden Modul!

 

Veröffentlicht unter Access, Excel, Outlook, PowerPoint, Publisher, VBA, Word | Verschlagwortet mit , , , , , , , , , , , , | Hinterlasse einen Kommentar

#Outlook-Anhänge #ablegen und #nummerieren

Sie verwenden eine der #VBA-Prozeduren zum #Ablegen von #Outlook-#Anhängen, die ich vor einiger Zeit vorgestellt habe? Das freut mich 🙂 In den Kommentaren finden Sie auch einige nützliche Ergänzungen und Modifikationen. Nun steht aber noch ein großer Wunsch im Raum: wenn es die Datei schon gibt, dann soll sie nicht überschrieben werden, sondern der Anhang soll mit einer Versionsnummer versehen werden und als neue Datei gespeichert werden.

Dazu ersetzen Sie einfach das Speichern

            mAtt.SaveAsFile myPath & "\" & mAtt.DisplayName

durch folgenden Schnipsel:

            Dim Suffix As String
            Dim SuffixNr As Long
            If Dir(myPath & "\" & mAtt.DisplayName) = "" Then
                mAtt.SaveAsFile myPath & "\" & mAtt.DisplayName
            Else
                'find out Suffix e.g. .pdf .docx
                If Mid(mAtt.DisplayName, Len(mAtt.DisplayName) - 3, 1) = "." Then
                    Suffix = Right(mAtt.DisplayName, 4)
                Else
                    Suffix = Right(mAtt.DisplayName, 5)
                End If
                SuffixNr = 1
                While Dir(myPath & "\" & Left(mAtt.DisplayName, Len(mAtt.DisplayName) - Len(Suffix)) & "_" & SuffixNr & Suffix) <> ""
                    SuffixNr = SuffixNr + 1
                Wend
                mAtt.SaveAsFile myPath & "\" & Left(mAtt.DisplayName, Len(mAtt.DisplayName) - Len(Suffix)) & "_" & SuffixNr & Suffix
            End If

Ist ein bisschen kompliziert 🙂 Und funktioniert 🙂 Und zwar so: wenn es eine Datei des Namens bereits gibt, wird SuffixNr hochgezählt und dabei geschaut, ob es eine Datei mit dem Namen Dateiname & _ & SuffixNr gibt – so lange, bis eben keine mehr gefunden wird. Dann wird mit der freien SuffixNr gespeichert.

Veröffentlicht unter Outlook, VBA | Verschlagwortet mit , , , , , | 3 Kommentare

#SVERWEIS = #VLOOKUP – tausend Einsatzmöglichkeiten

Sie wollen sich mit den Einsatzmöglichkeiten von #SVERWEIS auseinandersetzen? Gerhard Pundt hat allerlei Blogposts dazu zusammengetragen: https://clevercalcul.wordpress.com/2017/04/18/29-empfehlenswerte-artikel-zu-sverweis-vlookup/ Lesen Sie sich durch!

Veröffentlicht unter Excel | Verschlagwortet mit , | Hinterlasse einen Kommentar

#SVERWEIS und #Platzhalter

Sie haben für die Suche mit #SVERWEIS nur einen Teil des Suchkriteriums zur Verfügung? Das ist kein Problem – das Suchkriterium lässt sich mit #Platzhaltern aufblasen:

Ein * steht für beliebige weitere Zeichen:
=SVERWEIS(„Maria*„;$A$2:$B$8;2;FALSCH) findet den ersten Eintrag, der mit Maria anfängt.

Ein ? steht für ein einzelnes beliebiges Zeichen:
=SVERWEIS(„?292*„;$A$12:$B$17;2;FALSCH) findet den ersten Eintrag, in dem an den Stellen 2-4 die Zeichenfolge 292 steht.

Ein ~ entwertet einen Platzhalter, so dass er nicht gilt:
=SVERWEIS(„A~*„;$A$20:$B$23;2;FALSCH) sucht nach A*, und NICHT nach einem Eintrag, der mit A beginnt.

XTipp SVERWEIS Platzhalter

Veröffentlicht unter Excel | Verschlagwortet mit , , , , , | Hinterlasse einen Kommentar

#SVERWEIS mit zwei Kriterien – aber ja! Mit einer #Matrixformel geht das!

Sie wollen in #Excel auf Daten aus einer zweiten Liste zugreifen – haben aber zwei (oder mehr) Schlüsselfelder – da scheitert der #SVERWEIS 😦 Allerdings klappt es doch, wenn Sie mit einer #Matrixformel arbeiten 🙂

XTipp SVERWEIS Matrixformel

Die Formel selbst ist ein bisschen kompliziert:

=SVERWEIS(E3;WENN(($A$2:$A$5=E3)*($B$2:$B$5=F3);$A$2:$C$5;““);3;FALSCH)

Wir beginnen mit dem SVERWEIS und suchen das erste Schlüsselfeld (hier E3) in einem Bereich, den wir ungewöhnlich aufbauen:

WENN(($A$2:$A$5=E3)*($B$2:$B$5=F3);$A$2:$C$5;““)

Wir picken sozusagen den richtigen Bereich über den Vergleich der beiden zu suchenden Schlüsselfelder (die Multiplikation der beiden Vergleiche bringt WAHR, wenn beide WAHR sind, sonst FALSCH – weil nämlich WAHR in Wirklichkeit 1 ist, und FALSCH in Wirklichkeit 0) mit den zur Verfügung stehenden Bereichen heraus – das funktioniert über die Idee der Matrixformeln, mit denen diese Suche dann flexibel arbeiten wird.

Daraus nehmen wir dann wie auch sonst im SVERWEIS den Inhalt der Spalte 3 und wollen ein genaues Ergebnis (daher FALSCH) – und jetzt heißt’s: nicht einfach Enter drücken, sondern Strg+Shift+Enter – das macht diese hübschen Klammern {} und erhebt die Formel somit zur Matrixformel.

Jetzt funktioniert sie 🙂

Veröffentlicht unter Excel | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar

Findet der #SVERWEIS nun was oder nicht?

Immer wieder stehen Sie vor der Frage: hat mein #SVERWEIS nun 0 gefunden oder eine leere Zelle? Tja – in beiden Fällen liefert die Funktion 0 als Ergebnis (und keiner weiß, warum; ist aber so).

Prüfen Sie das Ergebnis mit ISTZAHL. Da kommt WAHR heraus, wenn eine Zahl (also auch 0) gefunden wurde, und FALSCH, wenn eine leere Zelle gefunden wurde (und keiner weiß, warum; ist aber so).

=WENN(ISTZAHL(SVERWEIS(A2;tab_Kunden!$A$1:$B$12;2;FALSCH));SVERWEIS(A2;tab_Kunden!$A$1:$B$12;2;FALSCH);“leere Zelle gefunden„)

ist eine typische Konstruktion, um die eingangs gestellte Frage zu lösen. (Vorausgesetzt, die Ergebnisse sind Zahlen oder leere Zellen).

Und hiermit urlaube ich weiter 🙂 Wünsche eine angenehme Osterwoche!

Veröffentlicht unter Excel | Verschlagwortet mit , , , , , , | 1 Kommentar

mit #VBA den #Blattschutz #prüfen

Wie können Sie in #VBA erfahren, OB ein #Blatt Ihrer #Excel #Arbeitsmappe #geschützt ist?

Mit

Worksheets("meinBlatt").ProtectContents

erfahren Sie den Zustand – ist die Eigenschaft True, dann liegt derzeit ein Schutz auf dem angegebenen Blatt.

So einfach ist das 🙂

Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , , , | Hinterlasse einen Kommentar

Schützen wir das #Blatt – aber nicht vor #VBA

Sie wollen ein #Excel-#Arbeitsblatt schützen – aber dann per #VBA bearbeiten?

Da gibt’s einen Trick:

Mit

Me.Worksheets("meinBlatt").Protect UserInterfaceOnly:=True

schützen Sie das Blatt – aber eben nur gegen Eingriffe des Benutzers. Mit VBA können Sie immer noch alles auf diesem Blatt machen, was sie wollen.

Mehr VBA gibt’s übrigens im Mai – ich unterrichte das nämlich wieder einmal 🙂 Und freu mich über Neugierige, die sich an das Thema wagen!

Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , , | Hinterlasse einen Kommentar

bestimmten #Abschnitt #drucken

Sie wollen von Ihrem #Word #Dokument einen bestimmten #Abschnitt #drucken? Oder mehrere?

Das geht so:

DATEI > Drucken > Einstellungen > Benutzerdefinierter Druck. Hier können Sie bestimmte Seiten eingeben (5-8), aber auch Abschnitte: s4-s7 druckt die Abschnitte 4, 5, 6 und 7.

WTipp DruckBenutzerdefiniert.png

Sogar die Seiten können Sie auswählen: p1s3-p4s3 druckt die Seiten (pages) 1-4 aus dem Abschnitt (section) 3. Achtung: die Seiten werden anhand der Seitenzahlen ausgewählt – wenn Abschnitt 3 mit Seite 4 beginnt, dann wird gar nichts gedruckt! (Wie Sie die Seitenzahlen in Abschnitt 4 mit 1 beginnen lassen, hab ich Ihnen vorgestern gezeigt.)

Mehrere Abschnitte? Die trennen Sie mit einem Beistrich: s1,s3,p1s99-p3s99 druckt den ersten, dritten und die Seiten 1-3 vom neunundneunzigsten Abschnitt.

Veröffentlicht unter Word | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar