Excel-Name Value befüllen mit + als erstes Zeichen

DrMueller

Erfahrenes Mitglied
Hallo Leute,
wir befüllen 'Textmarken' in Excelvorlagen mit folgender Zeile:
Code:
docProgram.ActiveWorkbook.names(MarkName).Value = MarkValue

Klappt soweit entsprechend gut, nur gibt es Probleme, wenn z.B. eine internationale Telefonnummer befüllt wird, welche als erstes Zeichen ein '+' enthält.

Excel interpetiert dies als Operation und gibt die entsprechende Fehlermeldung aus. Die Lösung, die Excel vorschlägt ist, dass man ein ein Hochkomma hinzufügt. Dies sieht jedoch entsprechend unschön aus, wenn in Listen teilweise Hochkommas erscheinen.

Ich habe etwas gegoogelt, jedoch keine Lösung gefunden, wie man das Names-Objekt anders als mit 'Values' befüllen könnte. Gibt es hier eine Alternative resp. hat jemand so einen ähnlichen Fall bereits gelöst?


Wie immer danke ich für jede Antwort.

Müller Matthias
 
Ist gar nicht so einfach da was passendes zu finden.

Aber du könntest anstatt des Hochkommas vielleicht ein Leerzeichen davor setzen. Das sieht man nicht und wenn alle Werte damit beginnen, sieht es auch von der Ausrichtung ordentlich aus!?
 
über die Zelle (Range) und das NumberFormat auf "@" setzen (=> String)
Visual Basic:
    With ActiveWorkbook.Names(MarkName).RefersToRange
        .NumberFormat = "@"
        .Value = MarkValue
    End With
 
Vielen Dank für die schnellen Antworten. Das Numberformat scheint tatsächlich die Lösung zu sein.
Da dieses jedoch nur für das NamedRange Objekt gilt und wir mit dem Names arbeiten, kann ich das nicht so einfach nehmen. das 'RefersToRange' verdoppelt und verschiebt alle Werte.
Im Anhang ist ein Beispiel, wie es derzeit aussieht: Eigentlich sollte nur die Spalte C befüllt werden, denn da sind die Werte drin. Diese erscheinen eben nun auch korrekt mit dem '+', aber B wird auch befüllt.
 

Anhänge

  • Dokument1.pdf
    119,3 KB · Aufrufe: 25
Wie wärs mit
Visual Basic:
docProgram.ActiveWorkbook.names(MarkName).Value = "'" & MarkValue
Das Apostroph ist für Excel das Zeichen, dass ein String folgt, egal welches Format die Zelle hat.


Der Doc!
 
@Doc: Matthias oben doch geschrieben das er das schon versucht hat und es ihm nicht gefällt!?


Auf dieser Seite hier wird einiges dazu erklärt.

Habe es mit dieser Beschreibung und yaslaws obigem Tipp mal so versucht und es scheint zu klappen:

Visual Basic:
Evaluate(ActiveWorkbook.Names("MarkName").Value).NumberFormat = "@"
Evaluate(ActiveWorkbook.Names("MarkName").Value).Value = MarkValue
 
OK, man sollte nicht 3 Sachen auf einmal tun (vor allem wenn Kaffee trinken eine davon ist), hab ich geflissentlich überlesen.


Der Doc!
 
Hi Doc,

für dich war es besser du hast es überlesen als das du den Kaffee verschüttet hast!
 
Hallo Leute,
mal wieder vielen vielen Dank für die Antworten.
Ich muss leider mal wieder meine Unwissenheit, was VBA angeht unter Beweis stellen. Laut Google ist ja Evaluate ein VBA-Command. Wie bekomme ich denn diesen in's VB6?
 
So genau so reingebastelt, leider scheint die Range immer noch die zwei Felder zu umfassen. In der Excelvorlage ist die B-Spalte komplett leer, weswegen es mich schon etwas erwundert.
Ich acker mal Tombes VBA-Link durch, vlt. gibt es noch eine andere Möglichkeit.
 
Zurück