Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenwert direkt als String übernehmen

Forumthread: Zellenwert direkt als String übernehmen

Zellenwert direkt als String übernehmen
01.05.2003 18:37:06
Michi
Hallo,

nun hab ich da gleich noch ein VBA-Problem:

Ich möchte über

Print #2, (Sheets(Blatt).Cells(Startzeile + i, j).Value);

die Zellwerte, genau so, wie sie eben dargestellt werden, in der Datei speichern und nicht irgendwie anders formatiert.

1,39 %
wird z.B. als
1,39082058414465E-03

gespeichert. Wie teil ich VBA mit, dass er den Wert bzw. String aus der Zelle direkt in der jeweiligen Formatierung übernehmen soll?

MfG
Michi

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zellenwert direkt als String übernehmen
01.05.2003 18:44:56
Helmut T.

Hi,

ich denke, wenn Du den Wert der Zelle (cell(x,y).value) vorher in eine Stringvariable übergibst ( myString = cell(x,y).value), erhältst Du das gewünschte Ergebnis.

Hab's mit "msgbox" probiert und es klappt, 5,5% werden z.B. als 0,055 angezeigt - das sollte auch mit der Ausgabe in eine Textdatei klappen.

Gruß,
Helmut



Anzeige
Re: nach wie vor gleiches Ergebnis
01.05.2003 19:00:11
Michi

Hi Helmut,

klappt leider noch nicht. Gleiches Ergebnis.

Wahrscheinlich liefert .value immer variant.
Da % aber kein gültiges Datenformat in VBA sein wird, schätz ich mal, wird daraus so eine eklig lange Kommazahl.

Also sollte es noch eine Auslesefunktion geben, die den Zellwert als String liefert, also die Zelle direkt ausliest und nicht umformatiert. Wie heißt diese Funktion?

Anzeige
Re: nach wie vor gleiches Ergebnis
01.05.2003 19:24:29
Knut

Das %- Zeichen steht physisch doch gar nicht in der Zelle, wenn es aus einem Zahlenformat resultiert.
Knut

Re: nach wie vor gleiches Ergebnis
01.05.2003 19:59:25
Michi

Hi Knut,

norja, wie Excel das intern speichert, überlass ich mal MS... da will ich mich gar nicht einmischen. :)
Aber es lässt sich ja dank Zellormatierung alles ganz hübsch darstellen und mein Wunsch wär eben, die Zelle in dieser Formatierung auszulesen. Wenns keine String-Value-Funktion zum formatierten Auslesen gibt, sollte es doch wenigstens eine Formatierungsfunktion geben, die mir zum über .value gelesen Wert über Parameter, welches Format man gerne hätte, den formatierten String liefert.

Oder muss ich den Wert echt erst in einen String verwandeln, den auf Mantisse und Exponent parsen und daraus den Prozentwert basteln? So primitiv kann doch selbst VBA nicht sein...? :)

Ciao!
Michi

Anzeige
Re: Zellenwert direkt als String übernehmen
01.05.2003 20:01:35
Rolf, Lgh.

Hallo,
ersetze .value durch .text
Gruß Rolf

So in der Art...
01.05.2003 20:12:24
Knut

Option Explicit
Sub test()
Dim strVar As String
strVar = Format([c1], "###.00 %")
MsgBox strVar
End Sub

Knut

Wird schon besser... :)
01.05.2003 21:06:32
Michi

Hi Knut,

danke, die Format-Funktion ist schon mal ein Ansatz zur Lösung. :)
Nun bräuchte ich bloß noch eine Funktion, die mir das Format (in welcher Form auch immer) einer angegebenen Zelle liefert.

Hab das schon mal eingebaut... aber ohne so eine Format-Ermittlungs-Funktion müsste man ja sonst trotzdem noch einige Abfragen einbauen und Prozentwerte ließen sich auch nicht von anderen Kommazahlen unterscheiden, da müsste man dann wissen, in welcher Spalte stehen die normalen Zahlen und in welcher die Prozentzahlen und weil es da jeweils jede Menge gibt, wär das alles sehr inflexibel. Muss man auf einem Blatt nochmal irgendwo eine Spalte einfügen, hauts mit der Sub nicht mehr hin. Und fehleranfällig wär das ganze auch so schon, selbst wenn man nichts mehr einbaut... :)

Ciao!
Michi

Anzeige
Re: Wird schon besser... :)
01.05.2003 21:19:09
Ramses

Hallo Michi,

myForm = Activecell.Numberformat

bei Prozent erhältst du z.B. mit

Debug.Print Activecell.Numberformat

das Ergebnis

0.00%

Oder für den Export könntest du das so verwenden:

x = activecell.NumberFormat
debug.Print format(5,x)

erscheint im Debug.Fenster

500.00%

Hilft das weiter ? :-)

Gruss Rainer


Anzeige
Re: bestens
01.05.2003 21:58:45
Michi

Jawohl, mit Numberformat gehts. Einfach schaun, ob darin ein Prozent-Zeichen vorkommt und schon spart man sich viele komplizierte und inflexible Abfragen! :)

Danke Euch und gute Nacht!
Michi

Re: bestens
01.05.2003 22:08:46
Ramses

Hallo Michi,

du musst gar nichts prüfen.
Die Variable x hat im obigen Beispiel das Numberformat als String übernommen. Du kannst damit den Zell-Wert für den Export direkt formatieren.

Das Export-Format ist dann gleich wie in der Tabelle dargestellt.

Gruss Rainer

Anzeige
;
Anzeige

Infobox / Tutorial

Zellenwert direkt als String übernehmen in Excel


Schritt-für-Schritt-Anleitung

Um den Zellenwert in Excel direkt als String zu übernehmen, kannst Du folgende Schritte befolgen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbook) und wähle Einfügen > Modul.

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub ExportString()
       Dim strVar As String
       strVar = ActiveCell.Text ' Verwendung von .Text für formatierten Wert
       Print #2, strVar ' Speichern in Datei
    End Sub
  4. Funktion ausführen: Wähle die Zelle aus, deren Wert Du exportieren möchtest, und führe das Makro ExportString aus.

Dieser Code verwendet die .Text-Eigenschaft, um den formatierten Wert der Zelle zu erhalten. Dies ist besonders nützlich, wenn Du Zellwerte mit speziellen Formaten, wie Prozentsätzen, direkt übernehmen möchtest.


Häufige Fehler und Lösungen

  • Problem: Der Wert wird als 1,39082058414465E-03 angezeigt.

    • Lösung: Stelle sicher, dass Du die .Text-Eigenschaft anstelle von .Value verwendest, um den formatierten Text zu erhalten.
  • Problem: Das Makro zeigt einen Laufzeitfehler.

    • Lösung: Vergewissere Dich, dass die Datei, in die Du exportieren möchtest, geöffnet und korrekt referenziert ist.

Alternative Methoden

Falls Du eine alternative Methode zur Übernahme von Zellwerten in Excel suchst, kannst Du die Format-Funktion verwenden:

Sub FormatExport()
    Dim formattedValue As String
    formattedValue = Format(ActiveCell.Value, "0.00%")
    Print #2, formattedValue
End Sub

Diese Methode ermöglicht es Dir, den Wert in einem bestimmten Format zu exportieren, unabhängig von der aktuellen Zellformatierung.


Praktische Beispiele

  1. Exportiere einen Prozentwert:

    Sub ExportPercentage()
       Dim percentValue As String
       percentValue = ActiveCell.Text ' Holt den formatierten Prozentwert
       Print #2, percentValue
    End Sub
  2. Dynamische Zellreferenz:

    Sub DynamicExport()
       Dim rowIndex As Integer
       Dim colIndex As Integer
       rowIndex = 2 ' Beispiel: Zeile 2
       colIndex = 3 ' Beispiel: Spalte 3 (C)
       Print #2, Sheets("Blatt1").Cells(rowIndex, colIndex).Text
    End Sub

Tipps für Profis

  • Nutze die Debug.Print-Funktion, um Zwischenergebnisse zu überprüfen und sicherzustellen, dass die Werte korrekt übernommen werden.
  • Wenn Du mit großen Datenmengen arbeitest, überlege, ob Du das Application.ScreenUpdating-Feature deaktivierst, um die Verarbeitungsgeschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich den Zellwert in einer bestimmten Formatierung exportieren?
Verwende die Format-Funktion, um den Wert vor dem Exportieren in die gewünschte Formatierung zu bringen.

2. Warum funktioniert .Value nicht wie erwartet?
Die .Value-Eigenschaft gibt den unterliegenden Wert zurück, nicht die formatierte Darstellung. Stattdessen solltest Du .Text verwenden, um den genau dargestellten Wert zu erhalten.

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