Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zahlen werden nach Copy&Paste in Standard ohne 3 Nachkommastellen umgewandelt-Problem
#1
Hallo Leute,

mein liebes Makro tat eigentlich was es soll. Klicke ich auf "Importieren", kann ich eine *.xls Datei auswählen in der eine Range kopiert wird, dann wird die *.xls Datei geschlossen und ich füge die kopierten Daten in meine noch offene Arbeitsmappe. So war das auch gewünscht! Jetzt ist mir aufgefallen, dass bei diesem Vorgang Zahlen, die ursprünglich im Format 72,439 (Zahl mit 3 Nachkommastellen) formatiert waren, in meiner Arbeitsmappe jetzt Standard sind und in das Format 72439 umgewandelt werden. Total nutzlos für mich, weil es der 72 Kilometer, bei Meter 439 beschreibt. Jetzt würde ich gerne eine VBA Lösung präsentieren, ohne Zellen zu formatieren oder so.

Hier mein Code mit welchem ich bisher die Daten importiere, aber die Zahlen werden so in das für mich nutzlose Format 72439 umgewandelt Sad
Die PasteSpecial-Methode hat mich bisher nicht weitergebracht, da das Makro dann immer ausgestiegen ist.

Code:
Private Sub LUBPladenimportierenundinZahlenumwandeln()
' Manuelle Suche nach LUBP und Datenimport
   ' Prüft ob schon LuBP-Daten importiert sind
   If Not Range("Start!A113").Value = "" Then
   AchtungLuBPschonImportiert.Show
   Else
   ' Öffnet Dialog zum Suchen der Datei der LUBP
       MsgBox "Bitte wähle die aktuelle Anlage 3 (*.xls-Datei, entsprechend GBV)"
   Dim MyFile As Variant
 
   ' "Excel (*.xls), *.xls" beschränkt die Dateiauswahl auf XLS Dateien
   MyFile = Application.GetOpenFilename("Excel (*.xls), *.xls")
   'Bildschirmaktualisierung aus
   Application.ScreenUpdating = False
       
       If Not MyFile = False Then
       Workbooks.Open (MyFile)
       Else
       Exit Sub
       End If
   ' Markiert alle Zellen und kopiert sie in die Zwischenablage
   Range("A1:Z1000").Select
   Selection.Copy
   
   ' Speichert nicht und schließt die geöffnete Datei, DisplayAlerts deaktiviert kurzzeitig die Nachfrage nach Speichern
   Application.DisplayAlerts = False
   ActiveWorkbook.Close SaveChanges:=False
   Application.DisplayAlerts = True
   
   ' Fügt alle Daten ein und springt wieder zu EK-Datum-Feld
   Range("A100").Select
   ActiveSheet.Paste
   Range("C14").Select
   
   'Entfernt den Selektionsrahmen
   Application.CutCopyMode = False
   
   'Bildschirmaktualisierung ein
   Application.ScreenUpdating = True
   
   ' Bestätigung über den Import der LUBP Daten
   MsgBox "Die ausgewählten LuBP-Daten wurden erfolgreich importiert"
   Exit Sub
   End If
End Sub

Grüße
Martin
Antworten Top
#2
Hallo Martin

diesen Teil deines Codes einfach mal übernehmen (kopieren) und schauen was passiert ...
Auf Range().Select vor dem kopieren kann man verzichten und Copy direkt dranhanegen!

Sollte es weiterhin Probleme geben am besten mal eine kleine Beispieldate beider Dateien mit Fantasie Daten hochladen.

mfg  Gast 123

Code ungetestet !!
Code:
  ' Markiert alle Zellen und kopiert sie in die Zwischenablage
  Range("A1:Z1000").Copy
 
  ' Speichert nicht und schließt die geöffnete Datei, DisplayAlerts deaktiviert kurzzeitig die Nachfrage nach Speichern
  Application.DisplayAlerts = False
  ActiveWorkbook.Close SaveChanges:=False
  Application.DisplayAlerts = True
 
  ' Fügt alle Daten ein und springt wieder zu EK-Datum-Feld
  Range("A100").PasteSpecial xlPasteValues
  Range("C14").Select
Antworten Top
#3
Guten Morgen,

Danke für deine Antwort Gast123, leider wird versursacht die PasteSpecial-Methode einen Laufzeitfehler 1004:
"Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden" und er landet bei der Zeile:
Code:
Range("A100").PasteSpecial xlPasteValues
Es ist mir ein Rätsel. Könnte das Problem durch das schon geschlossene Arbeitsblatt verursacht werden? Weil die Daten zum Einfügen aus der Zwischenablage kommen sollen?

Wünsche einen erfolgreichen Tag!
Antworten Top
#4
Hallo

ja ja, Computer können "Bauchschmerzen" haben, aber keine Sorge, dem kommen wir auf die Spur!!  Einfach probieren!
Vielleicht verliert Excel beim Schliessen der Datei die Orientierung in welchem Blatt er sich gerade befindet??
Was passiert wenn du vor Paste Special die Zieltabelle noch mal aktivierst/selektierst??  Hift uns das weiter???
Für Zieltabelle bitte den richtigen Tabellen Namen in der Zieldatei angeben, den kenne ich ja nicht!
 ' Fügt alle Daten ein und springt wieder zu EK-Datum-Feld
  Worksheets(Zieltabelle).Activate   'oder .Select!!
  Range("A100").PasteSpecial xlPasteValues
  Range("C14").Select

alternativ dazu müsste sonst folgende Zielangabe funktionieren:
  ThisWorkook.Worksheets(Zieltabelle).Range("A100").PasteSpecial xlPasteValues

Bei Sheet Orientierungsfehler könnte evtl noch ein Laufzeitfehler bei Range("C14").Select auftreten???
Probier bitte mal die zwei genannten Massnahmen aus.  Es gibt noch eine dritte Variante, ich erklaere sie gleich mit:
Bei dieser Methode werden die kopierten Daten zuerst eingefügt, und die Datei danach geschlossen!!

Welche Methode zum Erfolg führt musst du ausprobieren. Wichitg ist nur das eine davon klappt!!  Viele Wege führen nach Rom ...

mfg  Gast 123
 
  ' Markiert alle Zellen und kopiert sie in die Zwischenablage
  ActiveWorkbook.Range("A1:Z1000").Copy

  ' Fügt vor dem Datei Schliessen alle Daten ein !!
   ThisWorkbook.Worksheets(Zieltabelle).Range("A100").PasteSpecial xlPasteValues
  
  ' Speichert nicht und schließt die geöffnete Datei, DisplayAlerts deaktiviert kurzzeitig die Nachfrage nach Speichern
  Application.DisplayAlerts = False
  ActiveWorkbook.Close SaveChanges:=False
  Application.DisplayAlerts = True
  
  ' springt jetzt wieder zu EK-Datum-Feld
   Range("C14").Select
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • kliffi01
Antworten Top
#5
Hallo Gast,

die Variante bei welcher die geöffnete Datei noch offen ist, während ich die Daten einfüge, hat zu gewünschter Lösung geführt!
Die Zahlen bleiben Zahlen mit drei Nachkommastellen.
Danke dir vielmals.

Grüße
Martin

Code:
   ' Markiert alle Zellen und kopiert sie in die Zwischenablage
   Range("A1:Z1000").Copy
   ThisWorkbook.Worksheets("Start").Range("A100").PasteSpecial xlPasteValues
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste