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

UDF - Argument ohne " " übergeben möglich?

UDF - Argument ohne " " übergeben möglich?
17.06.2008 23:03:00
Peter
Guten Abend
Ich habe eine Frage zu meiner benutzerdefinierten Funktion. Ich muss dieser Funktion 3 Argumente übergeben. Das zweite ist ein Bereichsname, den ich in Anführungszeichen einsetzen muss.
cw(G24;"_A";1)
Wäre es möglich, und wenn ja, wie ist es anzustellen, dass ich anstelle der obigen Schreibweise
cw(G24;_A;1), also den Bereichsnamen ohne Anführungszeichen schreiben kann. Allerdings reklamiert die Function schon, wenn ich bei Optional Periode as String = _A, "_" ... schreibe, dass das Sonderzeichen _ nicht genehm ist. Ansonsten hätte ich mir vorstellen können, dass ich _A übergebe und dann in der Funktion
der Variable "Periode" die Anführungszeichen wieder vor- und hintenanstelle. Dann müsste die Funktion insgesamt ja unverändert laufen.
Periode = """ & Periode & """
Der Sinn der Sache: Die Eingabe würde etwas vereinfacht.
Danke für eine Antwort.
Gruss, Peter
Public Function cw(RefZelle As Variant, _
Optional Periode As String = "_A", _
Optional Positiv As Boolean = True) As Variant
...

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
17.06.2008 23:27:00
Daniel
Hi
Bereichsnamen stehen für Zellbereiche, wenn du den Bereichsnamen ohne Anführungzeichen an die Funktion übergeben willst, musst du den 2. Parameter als RANGE deklarieren.
Gruß, Daniel

AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 07:19:00
Peter
Hallo Daniel
Optional Periode As Range = _A kann ich nicht definieren, da die Meldung erscheint "Fehler beim kompilieren - ungültiges Zeichen (_) - es geht also auch mit Range nur
Optional Periode As Range = "_A", (selbst Variant geht nicht).
Gibt es sonst ein Trick, dass ich den wirklich existierenden Bereichsnamen _A (und andere ähnliche) ohne Anführungszeichen (" ") übergeben kann?
Gruss, Peter

Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 09:21:11
Beverly
Hi Peter,
versuchs mal einfach so

Public Function cw(RefZelle As Variant, _
Optional Periode, _
Optional Positiv As Boolean = True) As Variant




AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 11:50:07
Peter
Hallo Karin
Vielen Dank. Das würde so wohl schon gehen, allerdings ist die Funktion so aufgebaut, dass die optionale Periode den Wert _A übernehmen muss, wenn nicht ein anderer übergeben wird.
Dafür kann ich ja abfragen, ob die Variable leer ist, und wenn ja weise ich ihr den Wert "_A" zu, wenn nein, erweitere ich die Variable vorne und hinten mit einen Anführungszeichen ("). Dazu muss ich wohl die Variable redimensieren sonst ist der Inhalt der Variable nicht "_A" sondern """ & _A & """.
Was muss ich zusätzlich vorkehren, dass ich dann schlussendlich wieder einen String habe und bei Nicht-Eingabe dieser "_A" ist?
Danke für eine Antwort.
Gruss, Peter
Option Explicit
Public Function cw(RefZelle As Variant, _
Optional Periode, _
Optional Positiv As Boolean = True) As Variant
If Periode = "" Then Periode = "_A" Else Periode = """ & periode & """

Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 12:27:00
Beverly
Hi Peter,
ich weiß zwar nicht genau, was du damit bezweckst, aber versuche anstelle von If Periode = "" dieses: If IsMissing(Periode) Then


AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 17:55:00
Peter
Hallo
Vielleicht sind wir der Lösung schon ziemlich nahe. Folgendes fehlt mir noch
Wie wandle ich die Variant-Variable mit dem Inhalt """ & _A & """ in einen String um, der "_A" enthält?
Mit Redim oder ähnlichem bin ich nicht bewandert.
Bin dankbar für eine Antwort.
Gruss, Peter

AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 21:30:54
Hajo_Zi
Hallo Peter,

Option Explicit
Sub Peter()
Dim VaVariable As Variant
Dim StVariable As String
VaVariable = """ & _AB & """
MsgBox "," & VaVariable & ";" & Len(VaVariable)
StVariable = Mid(VaVariable, 5, Len(VaVariable) - 5 - 3)
MsgBox StVariable
End Sub



Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
19.06.2008 16:12:00
Peter
Hallo Hajo
Das ist für mich DIE Lösung. Vielen Dank.
Zu meinem Verständnis:
Könntest du mir erklären, was die Überegungen zu untenstehender Codezeile sind?
StVariable = Mid(VaVariable, 5, Len(VaVariable) - 5 - 3)
Vielen Dank! Peter

AW: UDF - Argument ohne " " übergeben möglich?
19.06.2008 16:17:00
Hajo_Zi
Hallo Peter,
ich habe vermutet es geht nicht nur um _A sonder auch _ABD
Mid list ein Teil aus
5 ab 5 Stelle da steht das _
dann die Anzahl der Zeichen ergeben sich aus der Länge der Variablen minus Startpostion minus Zeichen dahinter -1
Gruß Hajo

Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
19.06.2008 18:21:09
Peter
Hallo Hajo
Vielen Dank für die Erklärung. Deine Vermutung war schon richtig - und ich habe beim Testen gestaunt, dass das klappt. Nochmals vielen Dank!
Peter

@ Hajo: UDF - Argument ohne " " übergeben möglich?
20.06.2008 14:27:00
Peter
Hallo Hajo
Ich habe nun versucht, die gewonnen Einsichten im meine Funktion einzubauen. Da bin ich mit der Variant-Variable vaPeriode gescheitert und habe nun mit Hilfe der Codezeile vaPeriode = vaPeriode (wenn ich mit der Maus darüber fahre) festgestellt, dass wenn ich das zweite Argument wie gewünscht mit _A übergebe, die Variable nichts enthält; wenn ich das zweite Argument mit "_A" übergebe, wird dies der Variable auch so übergeben.
Mache ich noch einen Überlegungsfehler?
Danke für eine Antwort und freundlicher Gruss, Peter

Public Function cw(RefZelle As Variant, _
Optional vaPeriode As Variant, _     'Alternativ = Optional vaPeriode as  _
Variant = """ & _A & """
Optional Positiv As Boolean = True) As Variant
Application.Volatile
Dim sFormula As String, sReference As String
Dim Periode As String
vaPeriode = vaPeriode
If IsEmpty(vaPeriode) Then vaPeriode = """ & _A & """   'nur wenn der optionale Wert nicht  _
schon weiteroben übergeben wird
Periode = Mid(vaPeriode, 5, Len(vaPeriode) - 8)
End Function


=CW(I15;_A;1) 'Argument 2 wird irgendwie nicht übernommen
=CW(I15;"_A";1) 'Argument 2 wird übernommen

Anzeige
AW: UDF - Argument ohne " " übergeben möglich?
18.06.2008 22:58:59
Daniel
HI
vielleicht so:
Optional Periode as Range = Range("_A")
Gruß, Daniel

232 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige