Thema Datum  Von Nutzer Rating
Antwort
Rot Kopie von Zahlen mit 3 (oder mehr) Kommastellen
17.06.2020 15:27:20 Bernhard
NotSolved
17.06.2020 17:27:41 Gast01233
NotSolved
17.06.2020 21:26:43 Gast25267
NotSolved
17.06.2020 21:32:12 Gast01233
NotSolved
18.06.2020 10:51:18 Bernhard
NotSolved
18.06.2020 10:53:07 Bernhard
NotSolved

Ansicht des Beitrags:
Von:
Bernhard
Datum:
17.06.2020 15:27:20
Views:
769
Rating: Antwort:
  Ja
Thema:
Kopie von Zahlen mit 3 (oder mehr) Kommastellen

Liebe VBA-Community,

ergänzend zu meiner Frage hier: http://www.vba-forum.de/forum/View.aspx?ziel=60061-Makro_gesucht

Da ich o.a. Beitrag als gelöst markiert habe, meine Frage in diesem Beitrag noch einmal:

 

Ich habe die Ausgabe nun etwas verändert. Dabei und bei der Verwendung von Exchtdaten ist mir aufgefallen, dass das Makro bei der Ausgabe von Zahlen mit drei Kommastellen, das Komma weglässt.

D.h. dass z.B. aus 265.559,888 (Input) 265.559.888 (Output) werden.

Option Explicit
  
Public out As Range 'erste Zelle in Ausgabetabelle
Public ctZ As Integer 'Zeile in Ausgabetabelle
Public ctS As Integer 'Spalte in Ausgabetabelle
  
  
Sub durchlauf()
Dim firstpos As Range 'erste Zelle in Eingabetabelle
Dim ze As Integer 'Zeile in Eingabetabelle
Dim sp As Integer 'Spalte in Eingabetabelle
Dim aktSP As String 'Inhalt erste Zeile der aktuellen Spalte
Dim aktZE As String 'Inhalt erste Spalte der ersten Zeile
Dim wert As String 'Inhalt der aktuellen Zelle
  
  
Set firstpos = Sheets("input").Range("A1")
Set out = Sheets("output").Range("A1")
ze = 0
sp = 0
ctZ = 0
ctS = 0
While firstpos.Offset(0, sp + 1).Value <> 0 'solange es spalten gibt
    sp = sp + 1
    While firstpos.Offset(ze + 1, 0).Value <> 0 'solange es zeilen gibt
        ze = ze + 1
        wert = firstpos.Offset(ze, sp).Value
        If wert <> Str("0") And wert <> "" Then 'wenn etwas in Zeile Zeile steht
        aktSP = firstpos.Offset(0, sp).Value
        aktZE = firstpos.Offset(ze, 0).Value
        ausgabe aktSP, aktZE, wert
        End If
    Wend
ze = 0
ctS = 0
'ctZ = ctZ + 1
Wend
End Sub
  
Function ausgabe(ze, sp, wert)
out.Offset(ctZ, ctS).Value = ze
out.Offset(ctZ, ctS + 1).Value = sp
out.Offset(ctZ, ctS + 2).Value = wert
ctZ = ctZ + 1
End Function

Input:

  Spalte1 Spalte2 Spalte3 Spalte4
Zeile1 265.559,888 60,000   10,000
Zeile2   40,000 20,000 40,000
Zeile3 30,000   10,000 20,000
Zeile4     70,000 20,000
Zeile5 50,000     10,000

Output:

Spalte1 Zeile1 265.559.888
Spalte1 Zeile3 30
Spalte1 Zeile5 50
Spalte2 Zeile1 60
Spalte2 Zeile2 40
Spalte3 Zeile2 20
Spalte3 Zeile3 10
Spalte3 Zeile4 70
Spalte4 Zeile1 10
Spalte4 Zeile2 40
Spalte4 Zeile3 20
Spalte4 Zeile4 20
Spalte4 Zeile5 10

Wie kann ich das verhindern?

Also Laie habe es mit Dim Wert As Double versucht, aber dann sind die Typen unverträglich.

Danke für eure Hilfe!

LG Bernhard


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 Kopie von Zahlen mit 3 (oder mehr) Kommastellen
17.06.2020 15:27:20 Bernhard
NotSolved
17.06.2020 17:27:41 Gast01233
NotSolved
17.06.2020 21:26:43 Gast25267
NotSolved
17.06.2020 21:32:12 Gast01233
NotSolved
18.06.2020 10:51:18 Bernhard
NotSolved
18.06.2020 10:53:07 Bernhard
NotSolved