Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
800to804
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Altes Makro - unsinnige If Anweisung

Altes Makro - unsinnige If Anweisung
12.09.2006 12:12:36
Philipp
Hallo,
ich habe ein alte Makro 'geerbt' und bei vielen Funktionen unsinniges Zeug gefunden, wie bei folgendem Beispiel. Diese Funktion, soll aus einem String, einen bestimmten Teil des Urstings als String zurückgeben.
Diese Funktion wird in mehreren anderen Funktionen aufgerufen, es müssen immer ein String und ein "Seperator" übergeben werden. Optional kann man dann noch von Rechts beginnen True/False übergeben und optional kann man noch 'StripPart' True/False übergeben.
Public

Function GetStringPart(str As String, Separator As String, Optional ByVal _
FromRight As Boolean, Optional ByVal StripPart As Boolean = True) As String
Dim nPos As Long
If Len(str) Then
If FromRight Then
nPos = InStrRev(str, Separator)
If nPos Then
GetStringPart = Mid$(str, nPos + Len(Separator))
If StripPart Then
str = Left$(str, nPos - 1)
End If
' Diese If Abfrage ist doch unsinnig, mit dem String 'str' passiert doch nichts mehr!?!
Else
GetStringPart = str
If StripPart Then
str = ""
End If
End If
Else
nPos = InStr(str, Separator)
If nPos Then
GetStringPart = Left$(str, nPos - 1)
If StripPart Then
str = Mid$(str, nPos + Len(Separator))
End If
Else
GetStringPart = str
If StripPart Then
str = ""
End If
End If
End If
End If
End Function

Mein Problem ist, dass ich nicht verstehe, was folgende If-Anweisung, nachdem der Funktion bereits ein String zugeteilt wurde, noch bringen soll? Der String 'str' wird eh nicht zurückgegeben, sondern nur der der Funktion zugewiesen wurde!
If StripPart Then
str = ...
End If
Seht ihr einen Sinn in der Zuweisung?
Gruß,
Philipp

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Altes Makro - unsinnige If Anweisung
12.09.2006 12:21:13
Matthias
Hallo Philipp,
Der String 'str' wird eh nicht zurückgegeben...
Irrtum, die Variable ist nicht ByVal definiert (sondern dann ByRef), das heißt eine Änderung in der Funktion ändert auch die Variable der aufrufenden Funktion:

Sub test1()
Dim s As String
s = "Hallo,Welt,Du"
Debug.Print GetStringPart(s, ",", False, False)
Debug.Print s
End Sub
Sub test2()
Dim s As String
s = "Hallo,Welt,Du"
Debug.Print GetStringPart(s, ",", False, True)
Debug.Print s
End Sub

Gruß Matthias
AW: Altes Makro - unsinnige If Anweisung
12.09.2006 13:14:08
Philipp
Wichtiger Hinweise, vielen Dank, daran habe ich nicht gedacht!
Gruß,
Philipp
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige