Thema Datum  Von Nutzer Rating
Antwort
Rot Trim Funktion
05.01.2008 15:55:00 Holger
NotSolved
06.01.2008 14:01:14 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
05.01.2008 15:55:00
Views:
1925
Rating: Antwort:
  Ja
Thema:
Trim Funktion
Hallo,
ich habe eine Frage. Ich habe bei einem VBA-Projekt einen Button programmiert, der Messwerte speichert (in eine Textdatei).
Dies funktionierte auch ohne Probleme, jedoch konnten die Messwerte erst wieder richtig geladen werden, als ich statt der CStr Funktion von VBA die Trim Funktion gewählt habe.
Bei der CStr Funktion wurden die Werte nicht als Zahlen erkannt, bei der Trim Funktion erkennt Exel dies ohne Probleme und völlig richtig als Zahlen an.
Kann mir jemand erklären, warum dies nur über die Trim Funktion möglich ist. Was genau macht diese eigentlich und was macht die CStr Funktion und wo liegt der Unterschied.
Hier noch der kommentierte Source zum Speichern und Laden von Messwerten.
Vielen Dank für eure Antworten, Holger.

'Messung speichern
'Funktion: Speichern der Werte in Datei (Pfad wird beim Aufruf übergeben)
Public Function MessungSpeichern(FileSavePath As Variant) As Variant ' übergibt Pfad
Dim ZeilenInhalt As String 'Zeichenfolge
Dim i, MZAnz As Long 'ganzzahlige Zahlen

MZAnz = MaxZAnzahl("Wertetabelle_Stützstellen") - 1 'nutzt Funktion (siehe unten) und ermittelt so Anzahl der Tabellenzeilen

Open FileSavePath For Output As #1 'Datei im Schreibzugriff öffnen
For i = 2 To MZAnz 'Schleife von 2 bis zum Ende der Tabellenzeilen
ZeilenInhalt = Trim(Str(Worksheets("Wertetabelle_Stützstellen").Cells(i, 1).Value))
'weißt der Variablen ZeilenInhalt die Zeichenfolge aus dem Arbeitsblatt "Wertetabelle_Stützstellen" für die Zelle in der ersten Spalte und der i-ten Zeile zu
ZeilenInhalt = Trim(ZeilenInhalt & " " & Str(Worksheets("Wertetabelle_Stützstellen").Cells(i, 2).Value))
'fügt zu der Variablen ZeilenInhalt die Zeichenfolge aus dem Arbeitsblatt "Wertetabelle_Stützstellen" für die Zelle in der zweiten Spalte und der i-ten Zeile hinzu getrennt durch ein Leerzeichen
Print #1, ZeilenInhalt 'Text in Datei schreiben
Next i 'erhöht i um eins

Close #1 'Datei schließen
End Function

'Funktion: Maximale Zeilenanzahl der Messwerte ermitteln
Public Function MaxZAnzahl(BlattName As String) As Integer 'übergibt zu zählendes Blatt
MaxZAnzahl = 1 'setzt den Zähler auf 1

Do While (Worksheets(BlattName).Cells(MaxZAnzahl, 1) <> "") 'Schleife solange der Inhalt der Zelle aus dem Arbeitsblatt in der ersten Spalte nicht leer ist wird
MaxZAnzahl = MaxZAnzahl + 1 'hier die MaxZAnzahl um eins erhöht
Loop 'gehört zu Do While schleife und schließt diese ab
End Function


'Messung laden
Option Explicit 'jede Variable muss deklariert werden

'Typendeklaration des einzulesenden Datensatzes
Type TDatensatz
x As Variant
y As Variant
End Type

Public Datensatz() As TDatensatz 'dyn. Type


'Funktion liest Messung.txt in Datenfelder
Function DatenInFelder(Zeile$()) As Integer
Dim DateiPfad, tmp As String
Dim DSatzNr As Long

DateiPfad = Application.GetOpenFilename("Text-Dateien (*.txt), *.txt") 'öffnet Filebox mit .txt Dateien
If DateiPfad = "Falsch" Then
MsgBox "Leider konnte Ihre Messung nicht geladen werden"
DatenInFelder = 0 'Rückgabewert 0: Funktion konnte nicht ausgeführt werden


Else
DatenInFelder = 1 'Benutzer hat gültigen Pfad einer Textdatei angegeben
Open DateiPfad For Input As #1 'Dateipfad wird geöffnet und für das Einlesen bereit gestellt
DSatzNr = 0 'Datensatznummer wird am Anfang auf 0 gesetzt
Do While Not EOF(1) 'Zeilenweise Einlesen bis zum Dateiende der Textdatei
DSatzNr = DSatzNr + 1 'Datensatznummer wird in der Do-Loop Schleife immer um 1 erhöht
ReDim Preserve Zeile(DSatzNr) 'Preserve erhält Feldinhalt

Line Input #1, Zeile(DSatzNr) 'Zeile vom Datensatz lesen

Loop
Close #1 'Datei schließen
End If
End Function 'Funktion wird beendet


'Funktion schreibt Daten in einen Datensatz
Function DatenInDatensatz(Zeile$())
Dim Teilstr() As String
Dim i As Long 'Laufvariable i wird vereinbahrt


For i = 1 To UBound(Zeile$()) 'für die Laufvariablen 1 bis zum Datensatzende
ReDim Preserve Datensatz(i) 'Datensatz wird erzeugt

'Zerlegung der Zeile
Teilstr = Split(Zeile$(i), " ", 2) 'Zeile wird an Leerzeichen getrennt
Datensatz(i).x = Teilstr(0)
Datensatz(i).y = Teilstr(1)


Next i 'Schleife wird wiederholt
DatenInDatensatz = 1 'Rückgabewert
End Function


'Datensatz in eine Exceltabelle schreiben
Function DatensatzInTabelle()
Dim i As Long

'Alle Datensätze werden in die angegebenen Excel-Zellen geschrieben

For i = 1 To UBound(Datensatz()) 'für den 1. bis zum letzten Datensatz
Worksheets("Wertetabelle_Stützstellen").Cells(i + 1, 1) = Datensatz(i).x
Worksheets("Wertetabelle_Stützstellen").Cells(i + 1, 2) = Datensatz(i).y
Next i
End Function


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Trim Funktion
05.01.2008 15:55:00 Holger
NotSolved
06.01.2008 14:01:14 Holger
NotSolved