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

Argument ist nicht optional?Was bedeutet das denn?

Forumthread: Argument ist nicht optional?Was bedeutet das denn?

Argument ist nicht optional?Was bedeutet das denn?
Peter
Hallo zusammen,
das folgende Makro soll abhängig vom Zellinhalt in V16 entweder das Makro "bearbeiten_next" oder "hinweis" starten. Leider erscheint statt dessen der Hinweis "Argument ist nicht optional". Das sagt mir leider überhaupt nichts. Hat jemand nen Tipp was das sein könnte?
Schon mal vielen lieben Dank,
Peter

Private Sub bearbeiten(ByVal Target As Range)
If Target.Address ("v16")
If Target.Value = 2 Then
Call bearbeiten_next
ElseIf Target.Value = 1 Then
Call hinweis
End If
End Sub

Anzeige
If Target.Address="$v$16" Then owT
26.01.2011 15:57:46
Rudi
...das dürfte sein Problem weder erklären noch...
26.01.2011 16:04:58
Luc:-?
…lösen, Rudi!
Offensichtlich hat er hier eine Ereignisprozedur ({Selection}Change) ohne Sinn und Verstand „umgefummelt“ und wundert sich nun über das Ergebnis… :->
Gruß Luc :-?
AW: ...das dürfte sein Problem weder erklären noch...
26.01.2011 16:17:05
Rudi
Hallo,
stimmt. Hab ich übersehen.
Allerdings dürfte
If Target.Address ("v16")
den nächsten Fehler (und die nächste Frage) verursachen.
Gruß
Rudi
Anzeige
Sicher...! ;-) Gruß owT
26.01.2011 16:18:53
Luc:-?
:-?
AW: Sicher...! ;-) Gruß owT
26.01.2011 17:00:27
Peter
Ich hab aus verschiedenen Codes den Befehl so zusammengestellt wie ich dachte dass es funktionieren müsste. Hat aber leider nicht funktioniert.
Eben! Ohne was nachzulesen! Dochte...
26.01.2011 19:49:27
Luc:-?
sind keine Lichter! bzw Überlasse das Denken den Pferden, die haben 'nen größeren Kopf! wie es im Volksmund heißt… Hier ist W wie Wissen angesagt!
Gruß Luc :-?
Anzeige
Wenn man Makros (VBA-Prozeduren)...
26.01.2011 15:59:06
Luc:-?
…verwendet, Peter,
sollte man sich schon mal mit den Grundlagen befassen (steht alles in der VBEditor-Hilfe). Dann muss man auch nicht hier solch triviale Frage stellen… ;->
Im Kopf deiner Prozedur ist ein bei Aufruf zu übergebender Parameter (Argument) zwingend vereinbart. Übergibst du bei Aufruf keinen, kommt diese F-Meldung.
Gruß Luc :-?
Anzeige
AW: Argument ist nicht optional?Was bedeutet das denn?
26.01.2011 16:40:26
Gerold
Hallo Peter
Vieleicht hilft dir das weiter.

'Wenn Target aus der Zelle gelesen werden soll
Private Sub bearbeiten1()
Dim Target As Range
Target.Value = Range("v16").Value
If Target.Value = 2 Then
Call bearbeiten_next
ElseIf Target.Value = 1 Then
Call hinweis
End If
End Sub
'Oder wenn Target als Adresse übergeben wird
Sub Test()
Dim Target As Range
Set Target = Tabelle1.Range("V16")
bearbeiten2 Target
End Sub
Private Sub bearbeiten2(ByVal Target As Range)
If Target.Value = 2 Then
Call bearbeiten_next
ElseIf Target.Value = 1 Then
Call hinweis
End If
End Sub
Mfg Gerold
Rückmeldung wäre nett.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Argument ist nicht optional – Bedeutung und Lösungen für VBA-Probleme


Schritt-für-Schritt-Anleitung

  1. Verstehe das Problem: Die Fehlermeldung "Argument ist nicht optional" tritt auf, wenn du eine Funktion oder Sub-Prozedur in VBA aufrufst, die ein Argument erwartet, aber keines übergeben wird. In deinem Fall wird die Funktion bearbeiten aufgerufen, ohne den erforderlichen Parameter Target.

  2. Korrektur des Codes: Stelle sicher, dass du beim Aufruf der Funktion den entsprechenden Parameter übergibst. Hier ein Beispiel, wie du die Funktion richtig aufrufst und den Parameter übergibst:

    Sub Test()
       Dim Target As Range
       Set Target = Tabelle1.Range("V16")
       bearbeiten Target
    End Sub
  3. Überprüfe die Bedingungen: Achte darauf, dass die Bedingungen innerhalb deiner Funktion korrekt formuliert sind. Der Code sollte so aussehen:

    Private Sub bearbeiten(ByVal Target As Range)
       If Target.Value = 2 Then
           Call bearbeiten_next
       ElseIf Target.Value = 1 Then
           Call hinweis
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Argument ist nicht optional"
    Lösung: Überprüfe, ob du bei allen Funktionsaufrufen die erforderlichen Parameter übergibst.

  • Fehler: "Fehler beim Kompilieren: Argument ist nicht optional"
    Lösung: Stelle sicher, dass du die richtigen Werte an die Funktion übergibst und die Parameter in der Funktionsdefinition korrekt sind.

  • Fehler: If Target.Address ("v16")
    Lösung: Korrigiere diese Zeile in If Target.Address = "$V$16" Then.


Alternative Methoden

  • Verwendung von optionalen Parametern: Du kannst in VBA optionale Parameter definieren, indem du das Schlüsselwort Optional benutzt. Das bedeutet, dass der Parameter nicht zwingend übergeben werden muss. Beispiel:

    Sub Beispiel(Optional ByVal Target As Range = Nothing)
       If Not Target Is Nothing Then
           ' Funktionalität hier
       End If
    End Sub
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler zu vermeiden. Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

Praktische Beispiele

Hier sind einige Beispiele, wie du mit optionalen Parametern in Excel VBA arbeiten kannst:

Sub TestOptional(Optional ByVal Wert As Variant = Null)
    If IsNull(Wert) Then
        MsgBox "Kein Wert übergeben."
    Else
        MsgBox "Der übergebene Wert ist: " & Wert
    End If
End Sub

Beispiel für den Funktionsaufruf:

Sub BeispielAufruf()
    TestOptional
    TestOptional 5
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was die Fehleranfälligkeit verringert.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deiner Prozeduren zu erläutern. Das macht es einfacher, Fehler zu finden und zu beheben.

  • Nutze die Debugging-Tools: Verwende den Debugger in VBA, um deinen Code schrittweise zu überprüfen und Fehler zu identifizieren.


FAQ: Häufige Fragen

1. Was bedeutet "nicht optional"?
"Nicht optional" bedeutet, dass ein Argument zwingend übergeben werden muss, wenn du eine Funktion oder Sub-Prozedur aufrufst.

2. Was bedeutet optional in VBA?
Ein optionaler Parameter ist ein Parameter, der nicht zwingend übergeben werden muss. Du kannst eine Funktion auch ohne diesen Parameter aufrufen.

3. Wie kann ich einen optionalen Parameter definieren?
Du kannst einen optionalen Parameter definieren, indem du das Schlüsselwort Optional in der Funktionsprozedur verwendest.

4. Was ist der Unterschied zwischen einem Pflicht- und einem optionalen Parameter?
Ein Pflichtparameter muss immer angegeben werden, während ein optionaler Parameter weggelassen werden kann.

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