Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Wenn "Herr" dann "Sehr geehrter Herr"

Forumthread: VBA: Wenn "Herr" dann "Sehr geehrter Herr"

VBA: Wenn "Herr" dann "Sehr geehrter Herr"
18.02.2021 21:47:52
Basti
Hallo Zusammen,
ich freue mich über jegliche Hilfe.
ich habe eine Makro, die Daten aus einer Tabelle entnimmt und in eine E-Mail hineintun soll.
Bei der Anrede jedoch habe ich in meiner Tabelle nur die Bezeichnung "Frau" und "Herr".
Ich möchte nun, dass in der Makro für die Anrede drinne steht, dass wenn in der Tabelle "Herr" steht dann "Sehr geehrter Herr" sonst "Sehr geehrte Frau" stehen soll.
In AA ist hier eine Nummer hinterlegt die der entsprechenden Person zugeordnet ist.
Daraufhin springt Excel in die andere Datei und sucht sich die korrekte Person und in Spalte A:1-A100 stehen die Personen mit Herr bzw, Frau.
Hier meine Codierung (die falsch ist):
Anrede = Application.WorksheetFunction.VLookup(AA, QUELLDATEI.Sheets("Test").Range("$A$1:$A$100"),"Herr" Then body = "Sehr geehrter" Else body = "Sehr geehrte")
Über jegliche Unterstützung bin ich dankbar.
Basti
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Wenn "Herr" dann "Sehr geehrter Herr"
18.02.2021 22:31:41
Yal
Hallo Basti,
verschieden Ansätze kommen hier zusammen.
Einen VLookup hat normalerweise als zweite Argument einen Bereich, dass mindestens 2 Spalten: in der erste wird gesucht, aus der zweite, dritte, ... (3ter Param) wird zurückgegeben.
In VBA kannst Du direkt den Inhalt testen:
If InStr(1, Worksheets("x").Range("A1"), "Herr", vbTextCompare) > 0 Then
Worksheets("x").Range("A1") = "Sehr geehrter Herr"
ElseIf InStr(1, Worksheets("x").Range("A1"), "Frau", vbTextCompare) > 0 Then
Worksheets("x").Range("A1") = "Sehr geehrte Frau"
End If
Wenn Du aber eine ganze Liste hast, dann doch
Ergebnis = WorksheetFunction.VLookup(Worksheets("x").Range("A1"), Worksheets("Dictionary"). _
Range("A:B"), 2, False)
If Not IsError(Ergebnis) Then Worksheets("x").Range("A1") = Ergebnis

(für IsError bin ich mir nicht sicher. Vielleicht gibt es ein feste Werte wie "#NV", die man testen kann)
sollte diese Möglichkeit chon während das Eintippen greifen, könntest Du deine "Liste" ins Autokorrektur-Wörterbuch eintragen. Dann brauchst keine VBA.
Ansonsten verwende ich PhraseExpress (Nachfolger von GhostTyper), was das Eintippen von wiederkehrenden Textbaustein wesentlich erleichtert.
VG
Yal
Anzeige
AW: VBA: Wenn "Herr" dann "Sehr geehrter Herr"
24.02.2021 15:48:15
Basti
Hallo Yal,
entschuldige mein verspätete Rückmeldung.
Vielen Dank für deine Unterstützung.
Basti
Vielen Dank für die Rückmeldung. oT
24.02.2021 19:57:59
Yal
;
Anzeige

Infobox / Tutorial

Anrede in Excel automatisieren: "Sehr geehrter Herr" oder "Sehr geehrte Frau"


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zum VBA-Editor. Du kannst dies tun, indem du die Tastenkombination ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste im Projektfenster auf dein Projekt und wähle Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das neue Modul:

    Sub AnredeGenerieren()
       Dim Anrede As String
       Dim Geschlecht As String
    
       ' Beispiel: Geschlecht aus einer Zelle lesen (z.B. A1)
       Geschlecht = Worksheets("x").Range("A1").Value
    
       If InStr(1, Geschlecht, "Herr", vbTextCompare) > 0 Then
           Anrede = "Sehr geehrter Herr"
       ElseIf InStr(1, Geschlecht, "Frau", vbTextCompare) > 0 Then
           Anrede = "Sehr geehrte Frau"
       Else
           Anrede = "Sehr geehrte/r"
       End If
    
       ' Anrede in eine andere Zelle schreiben (z.B. B1)
       Worksheets("x").Range("B1").Value = Anrede
    End Sub
  4. Ändere die Zellreferenzen nach Bedarf, um sie an deine Tabelle anzupassen.

  5. Führe das Makro aus, indem du im VBA-Editor auf F5 drückst oder das Makro aus Excel heraus startest.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"

    • Ursache: Falsche Zellreferenz oder falsches Arbeitsblatt.
    • Lösung: Stelle sicher, dass die angegebenen Zellreferenzen und Arbeitsblätter korrekt sind.
  • Fehler: "Typenkonflikt"

    • Ursache: Die Zelle enthält einen unerwarteten Wert.
    • Lösung: Überprüfe die Inhalte der Zellen und stelle sicher, dass sie entweder "Herr" oder "Frau" enthalten.

Alternative Methoden

Wenn du die Anrede in Excel automatisiert einfügen möchtest, kannst du auch folgende Methoden verwenden:

  • Excel-Formel: Du kannst die Anrede direkt in einer Zelle mit einer einfachen Formel generieren. Zum Beispiel:

    =WENN(A1="Herr";"Sehr geehrter Herr";WENN(A1="Frau";"Sehr geehrte Frau";""))
  • Automatisches Eintippen: Verwende die Autokorrektur-Funktion von Excel, um die Anrede automatisch einzufügen, wenn du "Herr" oder "Frau" eintippst.


Praktische Beispiele

  1. Beispiel für die Verwendung eines Makros:

    Angenommen, du hast eine Liste von Namen in Spalte A und möchtest die Anrede in Spalte B generieren. Du kannst das oben angegebene Makro verwenden, um die Anrede für jede Person zu erstellen.

  2. Beispiel für eine Excel-Formel:

    Wenn in Zelle A1 "Herr" steht, wird in B1 automatisch "Sehr geehrter Herr" erscheinen. Bei "Frau" wird "Sehr geehrte Frau" angezeigt.


Tipps für Profis

  • Verwende Named Ranges: Statt direkte Zellreferenzen zu verwenden, kannst du benannte Bereiche erstellen, die die Lesbarkeit deiner Formeln und Makros verbessern.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem VBA-Code, um unerwartete Situationen elegant zu behandeln.
  • Dokumentation: Dokumentiere deinen Code und deine Formeln, damit du und andere Benutzer später leichter verstehen, wie alles funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich die Anrede für mehrere Personen gleichzeitig generieren?
Du kannst eine Schleife in deinem VBA-Code verwenden, um durch eine Liste von Geschlechtern zu iterieren und die Anrede in die entsprechenden Zellen zu schreiben.

2. Kann ich die Anrede auch für andere Bezeichnungen anpassen?
Ja, passe einfach die Bedingungen in deinem VBA-Code oder deiner Excel-Formel an, um weitere Anredeformen zu integrieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige