Office: Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz?

Helfe beim Thema Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo! Mein Code sei Code: Public Sub MachWas(Optional ByRef A As Long, Optional ByRef B As String) if ( ... ) Then A = 1 if ( ... ) Then B = "Hallo"... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von User, 19. Januar 2008.

  1. Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz?


    Hallo!

    Mein Code sei

    Code:
    Beim ersten Aufruf von T wird ja B nicht mitübergeben. Von daher ist es sinnlos/kontraproduktiv, den entsprechenden Wert für B bereitzustellen. Wie müsste also in Machwas die Parameterdefinition bzw. die mit '...' gekennzeichnete Prüfung aussehen, um festzustellen, ob B nun mit übergeben wurde oder nicht?

    Ein MachWasA, MachWasB, ... MachWasZ würde ich gerne vermeiden. Das Interface ufert ansonsten aus.

    :)
     
  2. Hallo AnaMark,

    ein kleines Zitat aus der Excel-VBA-Hilfe sollte dich hier weiterbringen: *wink.gif*
    Code:
     
  3. Hallo, IngGi!

    Leider nein. Ich zitiere aus ebendieser Hilfe:

    "Anmerkung IsMissing funktioniert nicht mit einfachen Datentypen (wie Integer oder Double), [...]"

    Beispiel:

    Code:
    --> Die MsgBox erscheint in beiden Fällen.
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  4. Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz?

    Hallo AnaMark,

    äääh, ja - wer lesen kann und davon auch Gebrauch macht, ist klar im Vorteil!

    Wäre die Vorgabe von Dummywerten eine gangbare Alternative?
    Code:
     
  5. Abend auch,

    oder nimm anstatt:

    Code:
    sowas:

    Code:
    Dann funktioniert die Unterscheidung schon.

    cu, Bernd
    --
    Code:
     
  6. Hallo, IngGi und bst!

    Eure beiden Ideen hatte ich auch schon, habe sie aber verworfen, da:

    1) Ich beide Vorgehensweisen für schlechten Programmierstil halte. (Sorry, soll kein Vorwurf an einen von euch beiden sein; Ich habe schon an größeren Projekten mitgearbeitet; und da ist vieles, was für ein kleines 10-Zeilen-Makro noch O.K. ist, ein absolutes No-No. Außerdem geht es hier auch nicht um ein 10-Zeilen-Makro.)

    2) Dummywerte: Es gibt nicht in jedem Fall einfach festzulegende Werte, bei denen man in Zukunft garantieren kann, dass sie nicht vorkommen. Bei jedem Parameter im Vorfeld eine "Untersuchung" durchzuführen, welcher Parameter kommen kann und welcher garantiert nicht kommen wird, ist eigentlich nicht machbar. Anders ausgedrückt: Ich sehe es jetzt schon kommen, dass diese Variante in Zukunft für arge Probleme sorgen wird.

    3) Variant: Dann tu' ich ja tausendmal hin- und herkonvertieren und muss in jeder Fitzelsubroutine eine Prüfung auf den korrekten Typ machen mit Fehlerroutine etc.pp.. Bei einem Long ist klar, was er enthält. Damit kann man optimiert arbeiten, Datenfelder sind effizient. Bei einem Variant muss ich jedesmal auf den Typ prüfen (Vertraue keinen fremden Daten...), die Arbeit mit Variants benötigt viel mehr Ressourcen.

    ...aber so langsam habe ich den Eindruck, dass VBA alles ist, nur keine gescheite Programmiersprache. Die einfachsten Dinge, die man von vernünftigen (Makro-)Programmiersprachen gewöhnt ist, sind in VBA schlicht nicht gescheit lösbar. Microsoft hat sich hier wohl den gleichen Murks zusammengecoded wie im ganzen Rest ihrer Produkte... Und der Benutzer muss die irrsinnigsten Verrenkungen machen, um deren Versäumnisse auszugleichen. Aber leider habe ich hier keine andere Wahl und muss mit MS-Office... *frown.gif*
     
  7. Hi,

    Wenn es denn um mehrere 1000 Zeilen Code oder noch (viel) mehr gehen sollte ist IMHO VBA sowieso nicht mehr das geeignete Werkzeug. Nimm dann besser C++, C# und VSTO o.ä.

    cu, Bernd
     
Thema:

Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz?

Die Seite wird geladen...
  1. Umgang mit (optionalen) ByRef-Parametern / "NULL"-Referenz? - Similar Threads - Umgang optionalen ByRef

  2. Praktischer Umgang mit Zellenschutz

    in Microsoft Excel Hilfe
    Praktischer Umgang mit Zellenschutz: Hallo, ich habe ja einige Tabellen, die auch von anderen Mitarbeiter eingesehen werden können. Die haben allerdings nicht so viel Ahnung von Excel und wenn die mal irgendwo einen Wert ändern,...
  3. Standard-Wert ändern bei optionalen Parametern in LAMBDA

    in Microsoft Excel Hilfe
    Standard-Wert ändern bei optionalen Parametern in LAMBDA: Hallo Community, die Überschrift sagt eigentlich alles. Ich suche die richtige Syntax, um den Standard-Wert eines optionalen Parameters in einer Lambda-Funktion anzupassen. [optWERT]=1;...
  4. Bericht mit optionalen Feldern

    in Microsoft Access Hilfe
    Bericht mit optionalen Feldern: Hallo Zusammen, in einem Bericht sollen bestimmte Felder nur auftauchen, wenn das Kontrollkästchen ResIncl im Eingabeformular frm_Einheitendaten_reg angehakt wurde. Bedingung: Das soll auch...
  5. Umgang mit Phishing in Outlook.com

    in Microsoft Outlook Tutorials
    Umgang mit Phishing in Outlook.com: Umgang mit Phishing in Outlook.com Outlook.com Mehr... Weniger Eine Phishing-e-Mail ist eine e-Mail-Nachricht, die...
  6. Umgang mit Application.Match fehlerhaft

    in Microsoft Excel Hilfe
    Umgang mit Application.Match fehlerhaft: Hallo an Alle, findet evt. jemand den Fehler , warum die Variable "var" nicht gefüllt wird?!! Code: With Sheets("Accounts Payable Voucher") For intRow = 10 To 23 If .Cells(intRow, 3) = "59930"...
  7. Video: Umgang mit schreibgeschützten Abfragen in Access 2013

    in Microsoft Access Tutorials
    Video: Umgang mit schreibgeschützten Abfragen in Access 2013: Video: Umgang mit schreibgeschützten Abfragen in Access 2013 Access 2013 Mehr... Weniger...
  8. Umgang mit Optionsfeld

    in Microsoft Excel Hilfe
    Umgang mit Optionsfeld: Hallo! Ich bin ziemlich unerfahren im Umgang mit "Fortgeschrittenen-Funktionen" von Excel, und würde mich freuen wenn mir jemand weiterhelfen könnte: Ich möchte einen Fragebogen in Excel...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden