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

Forumthread: SVERWEIS mit ISTFEHLER in VBA?

SVERWEIS mit ISTFEHLER in VBA?
10.08.2007 21:26:00
Kasimir
Hallo Leute,
irgendwie bekomme ich es nicht hin. Ich will die Formel
=NICHT(ISTFEHLER(SVERWEIS($A7;Feiertage;1;0)))
(Feiertage ist ein Bereich A2:A22, dem ich einen Namen gegeben habe) in VBA mit „Application.WorksheetFunction….“ nachbauen und abfragen ob True oder False.
Kann mir jemand die Formel mal in Application.WorksheetFunction aufzeigen? Wäre Euch dankbar, sonst sitze ich hier noch bis morgen früh und komme nicht auf die Lösung.
Danke,
Kasimir

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
10.08.2007 21:56:26
Beate
Hallo Kasimir,
so die Wiedergabe in der aktiven Zelle:
Sub aktive_Zelle()
    ActiveCell.Formula = "=NOT(ISERROR(VLOOKUP($A7,Feiertage,1,0)))"
End Sub


und so in einer MsgBox:
Sub Msg_Box()
    MsgBox [NOT(ISERROR(VLOOKUP($A7,Feiertage,1,0)))]
End Sub

Gruß,
Beate

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
10.08.2007 22:06:03
Kasimir
HAllo Beate,
danke Dir für Deine Antwort. Eine Frage hätte ich da aber noch. Wie kann die Zellbezeichnuing A7 variabel gestalten?
Ich möchte über diese Funktion in der Spalte A von Zeile 7 bis Zeile 37 prüfen, ob einer der Tage ein Feiertag (liefert mir der Bereich Feiertage A2:A22 in einem anderen Tabellenblatt) ist. Das wollte ich mit der SVERWEIS-Formel aber eben in VBA machen.
Wenn Du so nett wärst mir da eventuell nochmal helfend unter die Arme zu greifen wäre ich suuuuper glücklich.
Danke Dir,
Kasimir

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
11.08.2007 12:51:43
Klaus-Dieter
Hallo Kasimir,
ich denke, du meinst das so:

Sub feiertag()
Dim iZeil As Integer
For iZeil = 7 To 37
Cells(iZeil, 2) = Application.WorksheetFunction.VLookup(Cells(iZeil, 1), Sheets("Feiertage") _
.Range("A2:A22", 2), False)
Next iZeil
End Sub


In Spalte A7 bis A37 steht jeweils ein Datum. Im Tabellenblatt Feiertage steht in Celle A2 bis A22 das Datum der Feiertage. In Spalte B stehen die Namen der Feiertage. Die Überträgt das Makro in die erste Tabelle nach Spalte B.
Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
11.08.2007 13:18:00
Rolf
Hallo Kasimir,
Beates Code ein bisschen ergänzt:

Sub aktive_Zelle()
Dim QString$, AString$, d As Range
Set d = Application.InputBox("Bitte Datumszelle auswählen", "Date", , , , , , 8)
AString = d.Address
QString = "=NOT(ISERROR(VLOOKUP(" & AString & ",Feiertage,1,0)))"
ActiveCell.Formula = QString
End Sub


fG
Rolf

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
11.08.2007 15:40:00
Kasimir
Hallo Rolf, hallo Klaus Dieter!
Danke Euch für Eure Antworten.
Rolf seine Antwort funktioniert, ist aber leider nicht das, was ich mir vogestellt habe, da es eine Formel in eine Zelle zurückgibt.
Klaus Dieters Lösung sieht viel versprechend aus, brint mir aber einen Laufzeitfehler1004 Anwendungs - oder objekdefinierter Fehler. Deine Ausführungen bezüglich wo sich die Feiertagsdaten befinden sind richtig. In Blatt "Feiertage in Zelle A2 bis A22 befinden sich die Datumswerte in Spalte B die Feiertagsnamen.
Warum erhalte ich den Fehler?
Danke nochmal und Gruß,
Kasimir

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
11.08.2007 17:52:00
Klaus-Dieter
Hallo Kasimir,
es sind immer die Kleinigkeiten an denen man scheitert. Anbei eine überarbeitete Version. Der Fehler wird ausgelöst, wenn SVerweis keine Übereinstimmung findet. Habe das jetzt mit "On Error Resume Next" abgefangen. Was intelligenteres ist mir auf die Schnelle nicht eingefallen. Funktioniert aber erst mal. Außerdem war der Suchbereich falsch definiert. Ist auch angepasst.

Sub feiertag()
Dim iZeil As Integer
On Error Resume Next
For iZeil = 7 To 37
Sheets("Tabelle2").Cells(iZeil, 2) _
= Application.WorksheetFunction.VLookup(Sheets("Tabelle2") _
.Cells(iZeil, 1), Sheets("Feiertage").Range("A2:B22"), 2, False)
Next iZeil
End Sub


Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: SVERWEIS mit ISTFEHLER in VBA?
11.08.2007 18:06:52
Kasimir
Hallo Klaus Dieter,
suuuuper, danke Dir. Genau so hatte ich mir das gedacht.
Noch ein schönes Wochenende,
Kasimir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

SVERWEIS mit ISTFEHLER in VBA meistern


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Menü auf Einfügen und wähle Modul.

  3. Füge den folgenden Code ein:

    Sub feiertag()
        Dim iZeil As Integer
        On Error Resume Next
        For iZeil = 7 To 37
            Sheets("Tabelle2").Cells(iZeil, 2) = Application.WorksheetFunction.VLookup(Sheets("Tabelle2").Cells(iZeil, 1), Sheets("Feiertage").Range("A2:B22"), 2, False)
        Next iZeil
    End Sub

    Dieser Code verwendet den SVERWEIS in Verbindung mit ISTFEHLER, um Feiertage in einer Tabelle zu überprüfen. Der Fehler wird durch On Error Resume Next abgefangen.

  4. Führe das Makro aus: Schließe den VBA-Editor und führe das Makro über Entwicklertools -> Makros aus.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der SVERWEIS keine Übereinstimmung findet. Stelle sicher, dass der Suchbereich korrekt definiert ist und dass die Daten vorhanden sind.

  • Falsche Zellreferenz: Achte darauf, dass die Zellreferenzen im VBA-Code korrekt sind. Wenn du beispielsweise in Tabelle2 arbeitest, stelle sicher, dass du auf die richtigen Zellen zugreifst.

  • Variabler Zellbezug: Wenn du die Zellbezeichnung variabel gestalten möchtest, kannst du den Code so anpassen:

    Sub aktive_Zelle()
        Dim QString$, AString$, d As Range
        Set d = Application.InputBox("Bitte Datumszelle auswählen", "Date", , , , , , 8)
        AString = d.Address
        QString = "=NOT(ISERROR(VLOOKUP(" & AString & ",Feiertage,1,0)))"
        ActiveCell.Formula = QString
    End Sub

Alternative Methoden

Eine alternative Methode zur Fehlerbehandlung in VBA ist die Verwendung von ISERROR anstelle von ISTFEHLER. Hier ist ein Beispiel:

Sub feiertagMitIsError()
    Dim iZeil As Integer
    For iZeil = 7 To 37
        If Not IsError(Application.WorksheetFunction.VLookup(Sheets("Tabelle2").Cells(iZeil, 1), Sheets("Feiertage").Range("A2:B22"), 2, False)) Then
            Sheets("Tabelle2").Cells(iZeil, 2) = Application.WorksheetFunction.VLookup(Sheets("Tabelle2").Cells(iZeil, 1), Sheets("Feiertage").Range("A2:B22"), 2, False)
        End If
    Next iZeil
End Sub

Diese Methode ermöglicht es, den SVERWEIS ohne Laufzeitfehler auszuführen, wenn keine Übereinstimmung gefunden wird.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du SVERWEIS mit ISTFEHLER in VBA verwenden kannst:

  • Überprüfung von Feiertagen: Mit dem oben genannten Makro kannst du in einer Liste von Daten (A7 bis A37) überprüfen, ob diese Feiertage sind und die Namen in die Spalte daneben eintragen.

  • Benutzerdefinierte Eingabe: Die aktive_Zelle-Subroutine erlaubt es dem Benutzer, eine Zelle auszuwählen, sodass du den Feiertags-Check flexibel gestalten kannst.


Tipps für Profis

  • Verwende Application.Match: Anstelle von SVERWEIS kannst du auch Application.Match verwenden, um die Position des gesuchten Wertes zu finden. Dies kann manchmal effizienter sein.

  • Optimierung der Fehlerbehandlung: Überlege dir, wann es sinnvoll ist, Fehler zu ignorieren. Nutze On Error GoTo für spezifischere Fehlerbehandlungen.

  • Dokumentation: Halte deinen Code sauber und dokumentiere wichtige Abschnitte, um die Wartbarkeit zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Zellen dynamisch anpassen? Du kannst die Zellreferenzen in deinem VBA-Code durch Variablen ersetzen, um eine dynamische Anpassung zu erreichen.

2. Was ist der Unterschied zwischen ISTFEHLER und ISERROR in VBA? ISTFEHLER ist eine Excel-Funktion, während ISERROR in VBA verwendet wird. Beide prüfen auf Fehler, aber in verschiedenen Kontexten.

3. Wie kann ich mehrere Bedingungen in SVERWEIS verwenden? Wenn du mehrere Bedingungen prüfen möchtest, kannst du verschachtelte IF-Anweisungen oder VLOOKUP in Kombination mit AND verwenden.

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