Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
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


Hallo Forum,
ich habe ein Problem, das ich so nicht bewältigen kann.
Ich möchte per VBA ab Spalte C4 abwärts Datumsangaben sortieren und zwar nach Jahr, Monat, Tag.
Kann mir jemand dabei helfen?
Danke, Ina

Hallo alle hier im Forum,
kennt jemand eine Möglicheit die Kopf- und Fußzeilen vor Veränderungen zu schützen? Muss aber ohne Makro sein.
Wer weiß eine Lösung und verrät Sie?
Danke und Gruß Thomas

Hallo Leute,
ich baue ein Berichtswesen in Excel auf. Aufgrund der großen Datenmenge benötige ich zwei Dateien.
- In der Datenbank-Datei (DB.xls) sind die Daten abgespeichert. Diese Datei ist durch Kennwort geschützt, um ein Verändern der Daten durch Unberechtigte zu verhindern.
-...

Hallo Excelgemeinde,
ich habe eine ziemlich umfangreiche txt, die ich in Excel in 2 Tabellen (aufgrund der Zeilenlimitation) einlese und bearbeite. Nun möchte ich sie gene wieder aus Excel in eine Tab delim txt exportieren, wobei mich zur weiteren Bearbeitung aber zusätzliche Tabs am Ende e...

Hallo Zusammen,
ich weiss, das Thema wird immer wieder in den verschiedensten Versionen aufgewärmt und nun muss ich das leider auch tun.
Es geht mir gar nicht so sehr darum, einen Planer zu haben, in dem ich automatisiert Mitarbeiter oder Urlaube eintragen kann sondern um die Kalendersi...

Hi,
ich versuche mir einen Geburtstagskalender zu bauen. Dabei habe ich Probleme mit der Sortierung des Geburtsdatums, da das Geburtsjahr bei der Sortierung nicht berücksichtigt werden soll. Wenn ich die Geburtstage sortiere dann sieht das immer so aus :
30.04.1964 Andreas Müller
22...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige