Hey Holger,
 
 ich hab den Vorschlag von dir gerade getestet. Und es funktioniert nicht. Er setzt dann alles Null. 
 Ich habe jetzt mal vor dem Ausführen des Makros, die Dezimalstellen definiert, z.B. 4 Dezimalstellen (bisher hatte ich die Zahlen vor dem Ausführen des Makros als Text definiert), dann passiert aber folgendes:
 
 aus 25.6350 wird 25.63500 (8 Zeichen - richtig!!!)
 aus -0.5000 wird -0.50000 (8 Zeichen - richtig!!!)
 aus 25.0000 wird 25000000.0000 (falsch!!!)
 
 Warum ignoriert er hier das Dezimalzeichen???
 
 Gruß, 
 Michi
 
 
 Holger schrieb am 02.04.2009 14:48:46:
 
 Hallo Michaela,
 ich gehe davon aus, dass aus 10 00000010, aus 1.2 000001.2 oder aus 0.03 00000.03 werden soll.
 Ersetze in deinem ersten Makro
 Cells(i, j) = Left(CStr(Cells(i, j)) & "00000000", 8)
 durch 
 Cells(i, j) = right("00000000" & CStr(Cells(i, j)) , 8)
 War das wirklich schwierig?
 Gruß
 Holger
 
 
 Michaela schrieb am 02.04.2009 09:22:36:
 
 Hallo zusammen,
 
 ich habe leider absolut keinen Schimmer von VBA und hoffe, dass ihr mir weiterhelfen könnt.
 Ich habe folgendes Problem. Ich muss eine .txt erstellen, die ein bestimmtes Format einhalten muss. Das Format heißt F8.0 (Fortran), d.h. er ließt immer acht Zeichen, dann muss die nächste Zahl beginnen. Das sieht dann ungefähr so aus:
 123456781234567812345678
    -2.02 100.520 0.00001 
 Leerzeichen, (-) und (.) werden hier ebenfalls als Zeichen gelesen.
 So, nun möchte ich allerdings die .txt über ein Excelsheet generieren, da meine Daten natürlich in einer Excel stehen und einen Umfang von 6x43825 Zellen besitzt. Nun wollte ich also über einen VBA-Code die Zeichenanzahl festlegen. Mir hat dann jemand aus einem anderen Forum folgende Syntax gegeben:
 
 Sub n()
       Dim i As Long
       Application.ScreenUpdating = False
       Columns("A:C").NumberFormat = "@"
       For i = 1 To 43825
        For j = 1 To 6
         Cells(i, j) = Left(CStr(Cells(i, j)) & "00000000", 8)
        Next j
       Next i
       Application.ScreenUpdating = True
 End Sub
 
 Das klappte ganz gut, aber nur für Dezimalzahlen. Bei ganzen Zahlen hat er einfach nur die Nullen drangehängt:
 aus 0.253 wurde 0.253000 
 aus -25.52 wurde -25.5200
 aber
 aus 10 wurde 10000000
 aus 123 wurde 12300000
 
 Für dieses Problem wurde mir nun folgende Syntax vorgeschlagen:
 
 Sub n()
   Dim i As Long, j As Long
   Application.ScreenUpdating = False
   Columns("A:F").NumberFormat = "@"
   For i = 1 To 43825
     For j = 1 To 6
       If Cells(i, j) <> "" Then
         If Int(Cells(i, j) * 1) = Cells(i, j) * 1 Then   
           Cells(i, j) = Left(Cells(i, j) & ".00000000)", 8)
         Else
           Cells(i, j) = Left(CStr(Cells(i, 1)) & "00000000", 8)
         End If
       End If
     Next j
   Next i
   Application.ScreenUpdating = True
 End Sub
 
 er gibt mir aber für die Zeile
 
  If Int(Cells(i, j) * 1) = Cells(i, j) * 1 Then 
 
 einen "Laufzeitfehler '13': Typen unverträglich" an.
 Könnte mir jemand sagen, was der Fehler ist? Wie schon erwähnt, habe ich null Ahnung von VBA, deshalb ist mir eine Erklärung in Baby-blabla lieber, als wenn ihr mir Fachbegiffe um die Ohren haut.
 
 Vielen Dank im Voraus und schönen Tag noch.
 
 Gruß,
 Michi     |