Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA benutzerdefinierte Function um Sverweis zu erweitern

263 views
Skip to first unread message

MR

unread,
Jun 20, 2012, 5:22:39 PM6/20/12
to
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

unread,
Jun 20, 2012, 11:47:55 PM6/20/12
to
Hallo Michael,
Du hast leider nicht geschrieben, welche Excelversion Du benutzt.

Am Wed, 20 Jun 2012 14:22:39 -0700 (PDT) schrieb 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

unread,
Jun 21, 2012, 2:16:32 PM6/21/12
to
Hallo Susanne,

> > 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

unread,
Jun 21, 2012, 5:11:57 PM6/21/12
to
Hallo MR,

Am Thu, 21 Jun 2012 11:16:32 -0700 (PDT) schrieb 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

unread,
Jun 22, 2012, 10:15:30 AM6/22/12
to
Funktioniert, vielen Dank Hr Busch!
0 new messages