Discussion:
VBA benutzerdefinierte Function um Sverweis zu erweitern
(zu alt für eine Antwort)
MR
2012-06-20 21:22:39 UTC
Permalink
Guten Abend,

ich wollte mir eine benutzerdefinierte Excel Funktion in VBA stricken. Zweck soll es sein, eine #NV Fehlermeldung abzufangen und durch eine sprechendere Fehlermeldung zu ersetzen. Üblicherweise mache ich das über eine geschachtelte Excel Formel folgendermaßen:
=wenn( istfehler( sverweis() ); "Fehlermeldung"; sverweis() )

um diese langwierige eingabe aber kürzer und übersichtlicher zu fassen wollte ich mir eine benutzerdefinierte vba function erstellen. leider klappt es nicht so recht. ich bin aber ratlos woran es liegt.

Function mySverweisNV(c As Range, m As Range, r As Integer, b As Boolean, t As String) As Variant
If IsError(VLookup(c, m, r, b)) Then
mySverweisNV = t
Else
mySverweisNV = VLookup(c, m, r, b)
End If
End Function

Vielen Dank im Voraus für hilfreiche Vorschläge!

beste Grüße,

MR
Susanne Wenzel
2012-06-21 03:47:55 UTC
Permalink
Hallo Michael,
Du hast leider nicht geschrieben, welche Excelversion Du benutzt.
Post by MR
ich wollte mir eine benutzerdefinierte Excel Funktion in VBA stricken.
Zweck soll es sein, eine #NV Fehlermeldung abzufangen und durch eine
sprechendere Fehlermeldung zu ersetzen. Üblicherweise mache ich das über
eine geschachtelte Excel Formel folgendermaßen: =wenn( istfehler(
sverweis() ); "Fehlermeldung"; sverweis() )
um diese langwierige eingabe aber kürzer und übersichtlicher zu fassen
wollte ich mir eine benutzerdefinierte vba function erstellen.
Falls es Excel2010 ist (vielleicht gibt es das auch schon in 2007?), gibt
es eine Funktion, die Du direkt benutzen kannst: WennFehler. Verkürzt die
Eingabe jedenfalls gewaltig, habe ich mittlerweile regelmäßig im Einsatz.

Vielleicht hilft Dir das ja schon weiter?

Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
--
Office 2010, SP1
Windows 7 Ultimate, aktueller Patchstand
KI-CL 2010
MR
2012-06-21 18:16:32 UTC
Permalink
Hallo Susanne,
Post by Susanne Wenzel
Post by MR
um diese langwierige eingabe aber kürzer und übersichtlicher zu fassen
wollte ich mir eine benutzerdefinierte vba function erstellen.
Falls es Excel2010 ist (vielleicht gibt es das auch schon in 2007?), gibt
es eine Funktion, die Du direkt benutzen kannst: WennFehler. Verkürzt die
Eingabe jedenfalls gewaltig, habe ich mittlerweile regelmäßig im Einsatz.
Vielleicht hilft Dir das ja schon weiter?
eine sehr schöne alternative. vielen dank für den tipp! nichtsdestotrotz hätte mich schon interessiert wo der fehler in meinem makro liegt?

beste Grüße,

MR
Claus Busch
2012-06-21 21:11:57 UTC
Permalink
Hallo MR,
Post by MR
eine sehr schöne alternative. vielen dank für den tipp! nichtsdestotrotz hätte mich schon interessiert wo der fehler in meinem makro liegt?
VLookup ist in dieser Art nicht deklariert. Probiere es so:

Function mySverweisNV(c As Range, m As Range, r As Integer, _
b As Boolean, Optional t As String) As Variant

If IsError(Application.VLookup(c, m, r, b)) Then
mySverweisNV = t
Else
mySverweisNV = Application.VLookup(c, m, r, b)
End If
End Function


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
MR
2012-06-22 14:15:30 UTC
Permalink
Funktioniert, vielen Dank Hr Busch!

Loading...