Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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

Betrifft: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 17.06.2008 23:03:06

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

  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Daniel
Geschrieben am: 17.06.2008 23:27:19

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 18.06.2008 07:19:28

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Beverly
Geschrieben am: 18.06.2008 09:21:11

Hi Peter,

versuchs mal einfach so

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




GrußformelBeverly's Excel - Inn


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 18.06.2008 11:50:07

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 & """


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Beverly
Geschrieben am: 18.06.2008 12:27:00

Hi Peter,

ich weiß zwar nicht genau, was du damit bezweckst, aber versuche anstelle von If Periode = "" dieses: If IsMissing(Periode) Then


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 18.06.2008 17:55:04

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Hajo_Zi
Geschrieben am: 18.06.2008 21:30:54

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


GrußformelHomepage


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 19.06.2008 16:12:02

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Hajo_Zi
Geschrieben am: 19.06.2008 16:17:56

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 19.06.2008 18:21:09

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


  

Betrifft: @ Hajo: UDF - Argument ohne " " übergeben möglich? von: Peter
Geschrieben am: 20.06.2008 14:27:00

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


  

Betrifft: AW: UDF - Argument ohne " " übergeben möglich? von: Daniel
Geschrieben am: 18.06.2008 22:58:59

HI

vielleicht so:

Optional Periode as Range = Range("_A")

Gruß, Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "UDF - Argument ohne " " übergeben möglic"