Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
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
Inhaltsverzeichnis

Function, nicht Fehler sondern "--" zurückgeben

Function, nicht Fehler sondern "--" zurückgeben
Peter
Guten Abend
Untenstehende Funktion liefert mir ein String zurück. Manchmal werden jedoch die Zeichen ">" und ")" im der Formel nicht gefunden, dann möchte ich "--" zurück erhalten.
Das klappt jedoch mit der Zeile
If IsError(cwRef) Then cwRef = "--"
noch nicht.
Wie muss ich den Code anpassen, dass das funktioniert?
Danke und Gruss, Peter
Public Function cwRef(rngC As Range)
Dim Pos1 As Long, Pos2 As Long, PosDiff As Long
'Formel wird in Zelle angezeigt, wenn Eingabe =kformel(Bezug) erfolgt
cwRef = rngC(1).FormulaLocal
Pos1 = WorksheetFunction.Find(">", cwRef) + 1
Pos2 = WorksheetFunction.Find(")", cwRef) - 1
PosDiff = Pos2 - Pos1
cwRef = Mid(cwRef, Pos1, PosDiff)
'Debug.Print Pos1 & " " & Pos2
If IsError(cwRef) Then cwRef = "--"
End Function

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Function, nicht Fehler sondern "--" zurückgeben
05.03.2012 17:21:49
Josef

Hallo Peter,
so?
Public Function cwRef(rngC As Range) As String
  Dim Pos1 As Long, Pos2 As Long, PosDiff As Long
  
  cwRef = rngC(1).FormulaLocal
  
  Pos1 = WorksheetFunction.Find(">", cwRef) + 1
  Pos2 = WorksheetFunction.Find(")", cwRef) - 1
  
  If Pos1 > 0 And Pos2 > 0 Then
    PosDiff = Pos2 - Pos1
    cwRef = Mid(cwRef, Pos1, PosDiff)
  Else
    cwRef = "--"
  End If
  
End Function



« Gruß Sepp »

Anzeige
AW: Function, nicht Fehler sondern "--" zurückgeben
05.03.2012 17:30:03
Peter
Hallo Sepp
Das ist natürlich besser sturkturiert, doch irgend etwas klappt noch nicht.
Vgl. kleine Testdatei:
https://www.herber.de/bbs/user/79219.xlsm
Gruss, Peter
AW: Function, nicht Fehler sondern "--" zurückgeben
05.03.2012 17:49:58
Josef

Hallo Peter,
Public Function cwRef(rngC As Range) As String
  Dim vntRet As Variant, Pos1 As Long, Pos2 As Long, PosDiff As Long
  
  On Error Resume Next
  
  vntRet = WorksheetFunction.Find(">", rngC(1).FormulaLocal)
  
  If IsNumeric(vntRet) And Not IsEmpty(vntRet) Then
    Pos1 = vntRet + 1
    vntRet = WorksheetFunction.Find(")", rngC(1).FormulaLocal, Pos1)
    If IsNumeric(vntRet) And Not IsEmpty(vntRet) Then
      Pos2 = vntRet - 1
      PosDiff = Pos2 - Pos1
      cwRef = Mid(rngC(1).FormulaLocal, Pos1, PosDiff)
    End If
  End If
  
  If Len(cwRef) = 0 Then cwRef = "--"
  
End Function



« Gruß Sepp »

Anzeige
AW: Function, nicht Fehler sondern "--" zurückgeben
05.03.2012 17:54:54
Sheldon
Hallo Peter,
versuchs mal hiermit. Die Worksheetfunction scheint mir ungeeignet, denn die gibt einen Fehler zurück, wenn sie keine Übereinstimmung findet. Lieber InStr benutzen, das ist eine VBA-Function. Und die gibt brav 0 aus, wenn sie nichts findet.
Public Function cwRef(rngC As Range) As String
Dim Pos1 As Long, Pos2 As Long, PosDiff As Long
Pos1 = InStr(rngC.FormulaLocal, ">")
Pos2 = InStr(rngC.FormulaLocal, ")")
If Pos1 > 0 And Pos2 > 0 Then
PosDiff = Pos2 - Pos1
cwRef = Mid(rngC.Value, Pos1, PosDiff)
Else
cwRef = "--"
End If
End Function

Gruß
Sheldon
Anzeige
halt, Fehler in einer Zeile
05.03.2012 17:58:30
Sheldon
Hallo nochmals,
funktioniert nicht, eine Zeile muss geändert werden:
If Pos1 > 0 And Pos2 > 0 Then
PosDiff = Pos2 - Pos1
cwRef = Mid(rngC.FormulaLocal, Pos1, PosDiff)
Gruß
Sheldon
AW: halt, Fehler in einer Zeile
05.03.2012 22:27:38
Peter
Hallo Sepp und Sheldon
Vielen Dank für die Beiträge, die mich zum Ziel geführt haben.
Mein Code lautet nun wie folgt:

Public Function cwRef(rngC As Range) As String
Dim Pos1 As Long, Pos2 As Long, PosDiff As Long
Pos1 = InStr(rngC.FormulaLocal, ">") + 1
Pos2 = InStr(rngC.FormulaLocal, ")") - 1
If Pos1  1 And Pos2 > Pos1 Then
PosDiff = Pos2 - Pos1
cwRef = Mid(rngC.FormulaLocal, Pos1, PosDiff)
Else
cwRef = "--"
End If
End Function

Da in der Formel vielfach eine Klammer ")" enthalten ist, die linke Abgrenzung ein ">" und die rechte eine ")" ist, muss ich mit folgender Ceile überprüfen, ob der erwartete String vorhanden ist:
If Pos1 1 And Pos2 > Pos1 Then
Gruss, Peter
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige