Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Einfügen Formatänderung

Makro Einfügen Formatänderung
19.12.2014 11:48:25
andthen
Hallo Zusammen,
aktuell arbeite ich an einem Makro, welches eine Quelldatei importiert und weiterverarbeitet. Dies ist der aktuelle Code mit dem ich arbeite :
Sub Import_mit_Dialog()
Dim Quelle As Object, Ziel As Object
Dim Datei As String
Dim lr As Long, i As Long
Dim letzteZeile As Long
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("alle Excel-Dateien(*.xls),*xls")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
Application.DisplayAlerts = False
'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei
Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets("Basis")
'zu kopierende Daten auswählen und einfügen
Quelle.Range("D:D").Copy
Ziel.Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
Quelle.Range("O:O").Copy
Ziel.Cells(1, 5).PasteSpecial xlPasteValuesAndNumberFormats
Quelle.Range("S:S").Copy
Ziel.Cells(1, 6).PasteSpecial xlPasteValuesAndNumberFormats
Ziel.Range("A2").Value = "WWW"
Ziel.Range("B2").Value = "XXX"
Ziel.Range("C2").Value = "YYY"
Ziel.Range("D2").Value = "ZZZ"
ActiveWorkbook.CloseApplication.DisplayAlerts = True
Ziel.Select
'Zeile 1 löschen und Spaltenbreite festlegen
Rows("1").Delete
Columns("A").ColumnWidth = "40"
Columns("B:F").ColumnWidth = "15"
Calculate
'Leerzeilen löschen
'Application.ScreenUpdating = False
'   lr = Cells(Rows.Count, 1).End(xlUp).Row
'  For i = lr To 1 Step -1
'     If WorksheetFunction.CountA(Cells(i, 1), Cells(i, 5)) = 0 Then Rows(i).Delete
'Next i
'Application.ScreenUpdating = True
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
ThisWorkbook.Worksheets("BLABLABLA").Select
letzteZeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
MsgBox letzteZeile
'Call Hochkommaentfernen
'Call TestSummieren
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub
Nun gibt es ein Problem mit dem fettgedruckten Codeteil beim Einfügen:
Füge ich die Werte per Makro in Ziel ein, so werden manche Zahlen automatisch als Text formatiert, also mit dem "unsichtbaren" Hochkomma. Die Daten der Quelldatei sowie die Zellen der Zieldatei sind als Zahlen formatiert und beim Einfügen von Hand wird dies auch so übernommen.
Wie kann es zu so etwas kommen, hat jemand einen Ansatz für mich?
Das 2. Problem ist, dass offensichtlich Werte beim kopiervorgang verloren gehen.
Nach dem Löschen des Hochkommas per "Text in Spalten" oder Makro stimmt der Gesamtwert nicht mit dem der Originaldatei überein.
Bisher ist mir nur aufgefallen, dass es bei den formatsgeänderten Zahlen meist um Dezimalzahlen handelt. Vielleicht ist dazu wichtig zu wissen, dass ich Probleme hatte mit den Tausendertrennzeichen und Dezimaltrennzeichen "," und ".". Aktuell beziehe ich diese Einstellung vom Betriebssystem, welches auf Englisch eingestellt ist. Ändere ich diese Einstellung in Excel, verschwindet zwar das Hochkomma, aber die eingefügten Daten werden trotzdem als Text behandelt.
Ich hoffe das sind ausreichend Informationen für euch und ihr könnt mir auf die Sprünge helfen, wo der Fehler liegt oder wo ich ansetzen kann.
Vielen Dank im Voraus !
Mit freundlichem Gruß
Robert

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Einfügen Formatänderung
19.12.2014 12:36:36
Rudi
Hallo,
die zu importieren Zahlen haben also , als TsdTrenner und . als Dezimalzeichen?
Dann musst du erst richtige Zahlen draus machen
Schema:
with quelle
vArr=.range(.cells(1,4),.cells(.rows.count,4).end(xlup))
end with
for i = 1 to ubound(vArr)
vArr(i,1)=replace(vArr(i, 1),",","")
vArr(i,1)=replace(vArr, 1),".",",")
next i
with ziel.cells(1, 1).resize(ubound(vArr))
.numberformat="General"
.value=vArr
end with

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige