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

Forumthread: 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
...

Anzeige

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




Anzeige
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

Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige