Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UDF, Rückgabewert Text anstelle Zahl

UDF, Rückgabewert Text anstelle Zahl
30.03.2007 07:54:01
Peter

Guten Tag
Untenstehende Funktion liefert mir gibt mir als Ergebnis das 1. Argument zurück, das nicht einen Fehler ergibt (Danke Josef Ehrensberger). Nun wollte ich nach dem endif etwas Weiteres einbauen, und zwar soll, wenn der Rückgabewert eine Zahl ist und diese kleiner als 10 ist ein Leerzeichen vorgeschoben werden.
Bei Debug.Print sehe ich, dass es funktioniert, denn wenn das Ergebnis 7.375 ist, wird dieses bei der Auswertung mit DEBUG.PRINT auch eingeschoben.
7.375
Wahr
7.375
Wahr
Was muss ich noch zusätzlich machen, dass der Rückgabewert ein Text wird? Im Moment trägt es mir lediglich die Zahl ein und die Leerzeichen verschwindet.
Danke für Feedback.
Peter


Public Function NOERROR(Arg1 As Variant, Arg2 As Variant, Optional Arg3 As Variant) As Variant
If IsError(Arg1) Then
If IsMissing(Arg3) Then
NOERROR = Arg2
Else
If IsError(Arg2) Then NOERROR = Arg3 Else NOERROR = Arg2
End If
Else
NOERROR = Arg1
End If
Debug.Print NOERROR
Debug.Print IsNumeric(NOERROR)
Debug.Print NOERROR * 1
Debug.Print NOERROR * 1 < 10
If IsNumeric(NOERROR) = WAHR And NOERROR < 10 Then NOERROR = " " & NOERROR
End Function

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 08:22:23
Bertram
Hallo Peter,
versuch's mal mit CStr(NOERROR)
Gruß
Bertram
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 08:51:52
Peter
Hallo Betram
Meintest du so (letzte Zeile vor End Function?
If IsNumeric(NOERROR) = WAHR And NOERROR < 10 Then NOERROR = CStr(" " & NOERROR)
~f~
Hat mir leider noch nicht geholfen - übrigens meine Formel im Sheet ist:
~f~
=""&NOERROR(LINKS(Zinstabelle!B12;SUCHEN("%";Zinstabelle!B12)-2)*1;"var.")
Gruss, Peter
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 09:00:11
Bertram
Hallo Peter,
man sollte doch genauer lesen (damit meine ich mich):-) Eigentlich meinte ich
If IsNumeric(NOERROR) = WAHR And NOERROR < 10 Then NOERROR = " " & CStr(NOERROR)
Aber das dürfte glaube ich nicht funktionieren.
In deiner Formel schreibst du zu Beginn "" anstatt " ". Vielleicht ist das schon der Fehler oder versuche
=" " & TEXT(NOERROR.....)
Gruß
Bertram
Anzeige
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 09:16:08
Peter
Hallo Bertram
Danke für die Rückmeldung.
So funktioniert es tatsächlich noch nicht.
Zur Funktion: Ich nehme an, dass mal beim Zusammensetzen von " " und NOERROR bewirken muss, dass NOERROR ab diesem Zeitpunkt ein String ist.
Zur Formel:
Die Anführungszeichen habe ich absichtlich zusammengeschrieben mit der Absicht, dass es sich dann um Text handelt, der linksbündig angezeigt wird.
Der Abstand kann ich nicht mit " " machen, denn wenn der Rückgabewert 10 ist würde dann die Zahl nicht mehr unter die einstelligen Rückgabewerte passen (das heisst, wie im Word mit dem Dezimaltab).
Gruss, Peter
Anzeige
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 16:25:34
Horst
Hi,
verwende statt "" dies: "'"
mfg Horst
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 22:54:27
Peter
Hallo Horst
Das hat mich leider auch nicht weiter gebracht, denn in der Zelle steht dann sichtbar vor der Zahl das Zeichen '
Nochmals die Problemstellung:
Von Sepp habe ich ein Code, den ich mit in dem Sinne erweitern wollte, dass der Rückgabewert, falls dieser eine Zahl ist und kleiner als 10, als erstes Zeichen ein Leerzeichen enthält, das auch "dargestellt" wird - das heisst nicht in der Zelle klammheimlich verschwindet.
Der Code lautet folgendermassen:

Public Function NOERROR(Arg1 As Variant, Arg2 As Variant, Optional Arg3 As Variant) As Variant
If IsError(Arg1) Then
If IsMissing(Arg3) Then
NOERROR = Arg2
Else
If IsError(Arg2) Then NOERROR = Arg3 Else NOERROR = Arg2
End If
Else
NOERROR = Arg1
End If
If IsNumeric(NOERROR) = WAHR And NOERROR < 10 Then NOERROR = " " & CStr(NOERROR)
End Function

In der Tabelle (z.B. Zeile 12) habe ich die Funktion wie folgt verwendet:
=""&noerror(LINKS(Zinstabelle!B12;SUCHEN("%";Zinstabelle!B12)-2)*1;"var.")
Damit wollte ich erreichen, dass die Zahlen linksbündig erscheinen und diejenigen Zahlen (Zinssätze), die weniger als 10 betragen, um eine Stelle eingerückt sind. Bei mir sind jedoch alle Zahlen ganz links ausgerichtet, ohne Leerzelle. Wie kriege ich das hin?
Danke für Feedback.
Peter
Anzeige
AW: UDF, Rückgabewert Text anstelle Zahl
30.03.2007 23:11:19
Josef Ehrensberger
Hallo Peter,
du solltest grundsätzlich zwei Dinge unterscheiden.
  • Welches Ergebnis steht in einer Zelle

  • Wie wird dieses ergebnis dargestellt

  • Das was du Erreichen willst, steuert man über das Zahlenformat.
    In deinem Fall z.b. mit
    [<10]" "0;Standard
    
    Allerdings geht das nur bei Zahlen!
    Gruß Sepp
    AW: UDF, Rückgabewert Text anstelle Zahl
    30.03.2007 23:36:22
    Peter
    Hallo Sepp
    Wirklich clever, vielen Dank.
    Trotzdem möchte ich nochmals nachfragen: Kann ich einer Zahl nicht ein oder mehrere Leerstellen voranschieben, womit dann das ganze zu einem String wird?
    Gruss, Peter
    Anzeige
    AW: UDF, Rückgabewert Text anstelle Zahl
    30.03.2007 23:58:23
    Josef Ehrensberger
    Hallo Peter,
    klar geht das, auch wenn ich den Sinn dahinter nicht verstehe.
    Dein Fehler liegt bei
    
    IsNumeric(NOERROR) = WAHR
    

    wenn schon, dann so
    
    IsNumeric(NOERROR) = True
    
    aber eigentlich genügt das.
    Public Function NOERROR(Arg1 As Variant, Arg2 As Variant, Optional Arg3 As Variant) As Variant
    If IsError(Arg1) Then
        If IsMissing(Arg3) Then
            NOERROR = Arg2
        Else
            If IsError(Arg2) Then NOERROR = Arg3 Else NOERROR = Arg2
        End If
    Else
        NOERROR = Arg1
    End If


    If IsNumeric(NOERROR) And NOERROR < 10 Then NOERROR = " " & CStr(NOERROR)

    End Function

    Gruß Sepp
    Anzeige
    AW: UDF, Rückgabewert Text anstelle Zahl
    31.03.2007 12:42:07
    Peter
    Hallo Sepp
    Vielen Dank - jetzt ist alles klar.
    Der Sinn ist folgender: Wenn die Daten, die ich so produziere, dann in einem anderen Programm weiterbearbeitet werden, kann dies ein Unterschied sein, wenn ich einen Prozentwert als Zahl darstelle und mit dem Format das gleiche bewirke, wie wenn ich eben einen String mit einem Leerzeichen zu Beginn habe.
    Nochmals besten Dank!
    Peter

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige