Microsoft Excel

Herbers Excel/VBA-Archiv

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

Anführungszeichen in Formel notwendig | Herbers Excel-Forum


Betrifft: Anführungszeichen in Formel notwendig von: Rene
Geschrieben am: 15.12.2009 10:36:38

Hallo Zusammen

Ich habe eine Formel, die ich so einsetzen muss:
=bpContent("Grob, Rene";"_phone")~f~ --> Im Hintergrund läuft dann via ein Add-In eine DB-Abfrage und in der entsprechenden Zelle wird mir dann die "phonenummer" reingeschrieben.

Ich möchte nun mit dieser Formel eine Art "Adressbuch" machen:
Name Vorname Phone Mail etc.
Meier Rene ~f~=bpContent("Meier, Rene";"_phone") =bpContent("Meier, Rene";"_eMail")~f~
Muster Hans

Wie kann ich nun meine ~f~=bpContent... Formel so anpassen, dass "Meier, Rene" aus den Zellen A2&B2 generiert wird inkl. den Anführungszeichen und ich dann die Formel nur noch runterkopieren muss?

Danke & Gruss
Rene

  

Betrifft: AW: Anführungszeichen in Formel notwendig von: {Boris}
Geschrieben am: 15.12.2009 10:44:33

Hi Rene,

die "" charakterisieren doch nur einen String?!

=bpContent(A2&", "&B2;"_phone")

Grüße Boris


  

Betrifft: AW: Anführungszeichen in Formel notwendig von: Rene
Geschrieben am: 15.12.2009 10:49:27

Hi Boris
Ja. Aber "leider" funktioniert die Abfrage nicht, wenn in der Zelle steht:
=bpContent(Meier, Rene;"_phone")
<br>
Die Abfrage funktioniert nur so:
=bpContent("Meier, Rene";"_phone")


Und aus diesem Grund müssen Anfürhungszeichen gesetzt werden, befürchte ich...
Gruss
Rene


  

Betrifft: AW: Anführungszeichen in Formel notwendig von: {Boris}
Geschrieben am: 15.12.2009 10:55:53

Hi Rene,

wie auch immer:

=bpContent(""""&A2&", "&B2&"""";"_phone")

Grüße Boris


  

Betrifft: oder so... von: Luschi
Geschrieben am: 15.12.2009 10:59:50

Hallo Rene,

so sollte es auch klappen: bpContent(ZEICHEN(34)&A1&", "&ZEICHEN(34);"_phone")

Gruß von Luschi
aus klein-Paris


  

Betrifft: ...und bei _phone genauso! Gruß owT von: Luc:-?
Geschrieben am: 15.12.2009 18:06:13

:-?


  

Betrifft: AW: Anführungszeichen in Formel notwendig von: Tino
Geschrieben am: 15.12.2009 10:47:00

Hallo,
so müsste es gehen
=bpContent(A1&", "&B1;"_phone")

In A1 steht Meier und in B1 Rene.

Die Anführungszeichen brauchst Du nicht, weil dies schon ein String ist.

Gruß Tino


  

Betrifft: AW: Anführungszeichen in Formel notwendig von: Rene
Geschrieben am: 15.12.2009 10:52:30

Hi Tino


Eben ist dem leider nicht so... Wird Meier, Rene nicht mit "" geschrieben, kommt kein Wert zurück...


Gruss Rene


  

Betrifft: siehe Boris, ich kann es mir nicht vorstellen oT. von: Tino
Geschrieben am: 15.12.2009 11:00:19




  

Betrifft: Lies mal genauer bzw zwischen den Zeilen,... von: Luc:-?
Geschrieben am: 15.12.2009 18:17:04

...Tino!
Der so erzeugte Zellinhalt wird wohl anderweitig weiterverarbeitet und dann ist die String-Markierung sicher erforderlich, damit das dann nicht als Name interpretiert wird...
René kann's wohl nur nicht so gut erklären, aber damit ist er ja nicht allein... ;-)
Gruß Luc :-?


  

Betrifft: wenn Du meinst von: Tino
Geschrieben am: 15.12.2009 18:37:58

Hallo,

Die Hauptsache ist Rene hat eine Lösung bekommen, aber davon schreibt er auch nichts.

Ich bin fest davon überzeugt, dass =A1&", "&B1 genau das gleiche ist wie ="Meier, Rene",
wenn in A1 Meier und in B1 Rene steht.

Gruß Tino


  

Betrifft: Aber nicht, wenn das von einer Subroutine... von: Luc:-?
Geschrieben am: 15.12.2009 18:42:36

...in eine generierte Subroutine 1:1 übertragen wird, Tino!
Wirste spätestens dann merken, wenn du deinen 1.ProcGenerator schreibst...
Gruß Luc :-?

Ich schreib jetzt weiter an meinem... ;-)


  

Betrifft: kannst Du ein kleines Beispiel zeigen? von: Tino
Geschrieben am: 15.12.2009 19:05:26

Hallo,
ich kann es gedanklich nicht nachvollziehen.

Wenn ich eine Funktion habe die einen String haben will.

z. Bsp.

Function EinTest(strString$)
If InStr(strString, ", ") > 0 Then
    MsgBox Split(strString, ", ")(0) & vbCr & Split(strString, ", ")(1)
Else
    MsgBox "Trennzeichen ', ' nicht gefunden"
End If
End Function
Ist es der doch egal ob ich

=EinTest(A1&", "&B1)
oder
=EinTest("Meier, Rene")

schreibe, weil es ja das gleiche ist.

Gruß Tino


  

Betrifft: Später, vom Office-PC aus... ;-) Gruß owT von: Luc:-?
Geschrieben am: 16.12.2009 05:36:20

:-?


  

Betrifft: ok. bis später oT. von: Tino
Geschrieben am: 16.12.2009 09:58:42




  

Betrifft: So, dann mal los! Viell wird's dann klarer,... von: Luc:-?
Geschrieben am: 16.12.2009 13:25:07

...Tino!
Du weißt ja, dass sowohl die XLM-Fkt AUSWERTEN als auch die vbFkt Evaluate die Angabe der ganzen Fml als String verlangen. Enthält diese ebenfalls Strings müssen diese in verdoppelte An-/Ausführungszeichen gesetzt wdn. Auch, wenn ein analoges Konstrukt als Bestandteil einer automatisch generierten Prozedur direkt geschrieben wird, muss das so sein. Und um irgendetwas in dieser Art scheint es hier zu gehen. Irgendein (? Fremd-)Pgm benötigt die Angabe in genau dieser Form, sonst fkt es nicht. Der Anfang des gezeigten Wertes scheint darauf hinzudeuten — sieht wie 'ne (? ud/Fremd-)Fkt aus. Was die dann mit diesen Texten, die eigentl Namen sein könnten macht, weiß keiner. In VBA-generierten Fmln würde man hier Namen verwenden und dann wären die zusätzl String-Marker tatsächlich überflüssig. Allerdings würde das auch in VBA Sinn machen, wenn es Namen wären, die von einer generierten Prozedur verwendet wdn. Dann wäre die Schreibweise nämlich Range("namexyz") — schon benötigt man zusätzl String-Marker! Das adaptierende (? VBA-/Fremd-)Pgm scheint das nicht automatisch zu machen wie es bspw im Folgd der Fall ist...

Function XFunc()                'maxZlLänge noch nicht berücksichtigt!
    Rem XFuncGen:XInStr-Platzhalter XFunc-Operation
End Function

Function varFkt(ByVal XFktN As String, xArg, ParamArray XArgg())
    Rem --- DummyX-FctProc created by CyWorXxl:FXss.XFuncGen on 16.12.09 ---
    '   Achtung - xArg nur b.Bedarf - XFktN-Argg unter XArgg eintragen!
    '   B.Fktseinsatz in VBA b.Nichtbedarf f.xArg Null übergeben!
    Const xModN As String = "cxModul"       'hier StdOrt-Modul von XFunc einsetzen!
    Dim cp As VBComponent, psl As Long, xa As Variant, xf As String, mmf As Boolean, ac As  _
Range
    On Error Resume Next
    With Application
        If IsError(.Caller) Then Set ac = ActiveCell Else Set ac = .Caller.Cells(1)
        mmf = ac.HasArray And ac.Cells.Count > 1
    End With
    If Not IsMissing(xArg) And Not IsError(xArg) And Not IsNull(xArg) Then
        If Not mmf Then
            If Left(xArg, 1) = "(" Then xf = "(": xArg = Mid(xArg, 2)
        Else: xArg = ""
        End If
    End If
    If Left(XFktN, 1) = "." Then
        xf = vbTab & "XFunc = " & xf & "WorksheetFunction" & XFktN & "("
    ElseIf Left(XFktN, 1) = ":" Then
        xf = vbTab & "XFunc = " & xf & "Evaluate(""" & Mid(XFktN, 2) & "("
'    ElseIf VBAdapter(XFktN) Then
'        xf = vbTab & "XFunc = " & xf & "VBAdapter(""" & XFktN & """, "
    Else: xf = vbTab & "XFunc = " & xf & XFktN & "("
    End If
    With WorksheetFunction
        For Each xa In XArgg
            If IsMissing(xa) Then
                xa = ""
            ElseIf IsNull(xa) Then
                xa = "Null"
            ElseIf IsEmpty(xa) Then
                xa = "Empty"
            ElseIf IsError(xa) Then
                If CInt(xa) = 2000 Or CInt(xa) = 2042 Then _
                    xa = "Null" Else xa = "CVErr(" & CInt(xa) & ")"
            ElseIf IsArray(xa) Then
                Exit Function   'damit es auch bei dir fktioniert!
'                xa = VBAdapter("RinMxList", xa, -2)
'                xa = Replace(Replace(xa, "{", "Array("), "}", ")")
            ElseIf .IsText(xa) Then
                xa = """" & xa & """"
            Else: xa = Replace(Trim(CStr(xa)), ",", ".")
            End If
            xf = xf & xa & ","
        Next xa
    End With
    xf = Left(xf, Len(xf) - 1) & ")"
    If Not IsMissing(xArg) Then
        If Not IsError(xArg) Then
            If IsNumeric(Mid(xArg, 3)) Then xArg = Replace(xArg, ",", ".")
            xf = xf & xArg
        End If
    End If
    For Each cp In ActiveWorkbook.VBProject.VBComponents
        If cp.Name = xModN Then
            With cp.CodeModule
                psl = .ProcStartLine("XFunc", vbext_pk_Proc)
                While Left(.Lines(psl, 1), 8) <> "Function": psl = psl + 1: Wend
                .ReplaceLine psl + 1, xf
                xArg = XFunc()
                .ReplaceLine psl + 1, vbTab & "Rem XFuncGen:varFkt-Platzhalter XFunc-Operation"
            End With
            Exit For
        End If
    Next cp
    varFkt = xArg
End Function

Wenn du das mal ausprobieren willst, ist zu beachten, dass XFunc quasi als eine Art Register für alle Einsätze solcher Fktt dient. Bei Mehrfacheinsatz der generierten Universal-udF varFkt im Blatt muss deshalb der manuelle Berechnungsmodus gewählt wdn (sonst wird's katastrophal!). Übrigens kannst du damit auch jede vbFkt auswerten — alles Andere wird sich dir aus dem FktKörper erklären... ;-)
Viel Spaß! Gruß Luc :-?


  

Betrifft: Mir geht jetzt ein Licht auf, hoffe ich ;-) von: Tino
Geschrieben am: 16.12.2009 14:02:08

Hallo,
Du meinst also das seine Funktion die Formel als ganzes verarbeitet und nicht die einzelnen Variablen.

Gruß Tino


  

Betrifft: Ja, das scheint ganz so auszusehen,... von: Luc:-?
Geschrieben am: 16.12.2009 15:00:21

...Tino;
da kommt man drauf, wenn man sich selbst mit so etwas beschäftigt, so wie ich gerade... ;-)
Gruß Luc :-)


Beiträge aus den Excel-Beispielen zum Thema "Anführungszeichen in Formel notwendig"