Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rückgabewert Funktionsaufruf boolean

Forumthread: Rückgabewert Funktionsaufruf boolean

Rückgabewert Funktionsaufruf boolean
16.01.2017 09:48:06
Ulfert
Moin,
ich habe eine Funktion definiert, die mögliche Trennzeichenfolgen von Textblöcken in einer csv- _ Datei erkennen soll. Der Aufruf schlägt jedoch fehl. Selbst wenn IsInSeparators laut Überwachung bei der Prüfung true ist, wird die Antwort nicht verarbeitet:

Open filename For Input As #1
Do
Line Input #1, s
If IsInSeparators(s) Then
Exit Do 'Exit Do wird nicht aufgerufen
End If
(...)
Loop until EOF (1)

Function IsInSeparators(InputString) As Boolean
Dim s As Variant
On Error GoTo err
IsInSeperators = False
For Each s In Seperators
If s = InputString Then
IsInSeperators = True
Exit Function
End If
Next s
err:
IsInSeperators = False
End Function

Viele Grüße, Ulfert
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nicht nachvollziehbar
16.01.2017 15:16:36
Michael
Hi,
das ist nicht nachvollziehbar, denn test funktioniert anstandslos:
Sub test()
Dim i&, s$
Do
i = i + 1
s = s & i
If IsInSeparators(s) Then
Exit Do
End If
Loop Until i >= 10
MsgBox s
End Sub
Sub test2()
Dim i&, s$
Dim abbruch As Boolean
Do
i = i + 1
s = s & i
If IsInSeparators(s) Then
abbruch = True
Else
MsgBox "Hier weitere Anweisungen, i=" & i
End If
Loop Until i >= 10 Or abbruch
MsgBox s
End Sub
Function IsInSeparators(InputString) As Boolean
If InStr(InputString, "6") > 0 Then IsInSeparators = True
End Function

test2 wäre eine Krücke, aber ich würde vermuten, daß Deine Function trotz gegenteiliger Aussage nie true zurückgibt. Setze doch zusätzlich vor das Exit do noch ne msgbox, damit Du siehst, ob der If-Zweig überhaupt ausgeführt wird.
Was mich eher fuchst, ist die Definition Deines hier nicht sichtbaren "Separators".
Schöne Grüße,
Michael
Anzeige
;
Anzeige

Infobox / Tutorial

Rückgabewert von Funktionsaufrufen in VBA: Umgang mit Boolean


Schritt-für-Schritt-Anleitung

  1. Definiere die Funktion: Erstelle eine Funktion, die einen Boolean-Wert zurückgibt. Achte darauf, dass die Rückgabewerte korrekt zugewiesen werden.

    Function IsInSeparators(InputString) As Boolean
       Dim s As Variant
       On Error GoTo err
       IsInSeparators = False
       For Each s In Seperators
           If s = InputString Then
               IsInSeparators = True
               Exit Function
           End If
       Next s
    err:
       IsInSeparators = False
    End Function
  2. Implementiere den Funktionsaufruf: Nutze die Funktion in einer Sub-Prozedur. Du kannst den If-Befehl verwenden, um den Verlauf der Logik zu steuern.

    Sub test()
       Dim i As Long, s As String
       Do
           i = i + 1
           s = s & i
           If IsInSeparators(s) Then
               Exit Do
           End If
       Loop Until i >= 10
       MsgBox s
    End Sub
  3. Überprüfe den Rückgabewert: Setze eine MsgBox ein, um den Rückgabewert der Funktion zu überprüfen, bevor Du die Schleife verlässt.


Häufige Fehler und Lösungen

  • Fehler: Funktion gibt nie True zurück: Überprüfe, ob die Separators korrekt definiert sind. Falls sie nicht sichtbar sind, wird die Funktion IsInSeparators niemals True zurückgeben.

  • Lösung: Debugging: Füge MsgBox-Anweisungen in die Funktion ein, um den Rückgabewert zu sehen. So kannst Du nachvollziehen, ob die Bedingungen erfüllt sind.


Alternative Methoden

  • Verwendung von Excel-Formeln: Wenn Du den Einsatz von VBA vermeiden willst, kannst Du auch Excel-Formeln wie IF oder SEARCH verwenden, um ähnliche Überprüfungen durchzuführen. Diese sind jedoch oft weniger flexibel als eine vba boolean function.

  • VBA Boolean Operators: Nutze die And und Or Operatoren in Deinen Bedingungen, um komplexere logische Ausdrücke zu erstellen.


Praktische Beispiele

  1. Beispiel für die Verwendung von IsInSeparators:

    Sub testWithSeparators()
       Dim inputText As String
       inputText = "TestText"
       If IsInSeparators(inputText) Then
           MsgBox "Separator gefunden!"
       Else
           MsgBox "Kein Separator."
       End If
    End Sub
  2. Verwendung von Excel Boolean in einer Formel:

    • Du kannst auch Excel-Funktionen wie COUNTIF verwenden, um zu überprüfen, ob ein Wert in einer Liste vorhanden ist.

Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler durch nicht deklarierte Variablen zu vermeiden und sorgt für mehr Klarheit in Deinem Code.

  • Effiziente Fehlerbehandlung: Stelle sicher, dass Du die Fehlerbehandlung in Deinen Funktionen implementierst. Nutze On Error Resume Next vorsichtig, um Laufzeitfehler zu ignorieren.

  • Testen und Validieren: Überprüfe immer die Rückgabewerte Deiner Funktionen. Das Testen von vba sub mit rückgabewert gibt Dir zusätzliche Sicherheit.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Boolean-Funktion in VBA korrekt funktioniert?
Verwende Debugging-Tools und füge MsgBox-Anweisungen ein, um den Ablauf und die Rückgabewerte zu überwachen.

2. Welche Excel-Version benötige ich für VBA-Funktionen?
Die meisten VBA-Funktionen sind in Excel 2010 und späteren Versionen verfügbar. Stelle sicher, dass Du die richtige Version verwendest, um alle Funktionen nutzen zu können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige