Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem mit Paste per VBA

89 views
Skip to first unread message

Matthias Fellbrich

unread,
Aug 16, 2004, 9:37:30 AM8/16/04
to
(XL2000 SP3 deutsch)

Hallo NG,

ich habe ein Problem mit einem per VBA durchgeführten Paste von Text.
Wenn ich als zu kopierenden Text etwa folgendes habe: (aus Textdatei,
Tab-Getrennt):

Hallo 100,231 200,456
Hallo2 200,231 400,456

und füge das manuell mit STRG-V in eine Tabelle ein, so funktioniert es.
Wenn ich aber denselben Text in der Zwischenablage habe, und es per VBA
folgendermaßen einfüge:

sub einfuegen()
Activesheet.Paste
end sub

so werden mir die Zahlen zerschossen:

Hallo 100.231 200.456
Hallo2 200.231 400.456

(die Punkte sind Tausendertrennzeichen, die Zahl ist 100231). PasteSpecial
funktioniert nicht, ich vermute, da in der Zwischenablage nur das Textformat
ist, und nicht das spezielle Excel-Format!? Übrigens geht es auch nicht,
wenn ich das Hallo weglasse ;-)

Hoffe mir kann dabei jemand helfen

mfg
Matthias Fellbrich


Eberhard Funke

unread,
Aug 16, 2004, 2:52:05 PM8/16/04
to
Hallo Matthias,

"Matthias Fellbrich" <m...@thyssenfahrtreppen.co> schrieb:

bei mir klappt das einwandfrei:

Tab1 A1=Hallo 100,231 200,456
Tab2 A2=Hallo2 200,231 400,456
(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)

A1 und A2 in die Zwischenablage kopiert, Tabelle 2 gewählt und Deinen
Code ausgeführt. Ausgabe wie Original mit Kommata.
--
Gruß Eberhard
XL 2000

Michael Schüller

unread,
Aug 16, 2004, 3:17:06 PM8/16/04
to
Hallo Matthias,

> ich habe ein Problem mit einem per VBA durchgeführten Paste von Text.
> Wenn ich als zu kopierenden Text etwa folgendes habe: (aus Textdatei,
> Tab-Getrennt):
>
> Hallo 100,231 200,456
> Hallo2 200,231 400,456
>
> und füge das manuell mit STRG-V in eine Tabelle ein, so funktioniert
> es. Wenn ich aber denselben Text in der Zwischenablage habe, und es
> per VBA folgendermaßen einfüge:
>
> sub einfuegen()
> Activesheet.Paste
> end sub
>
> so werden mir die Zahlen zerschossen:
>
> Hallo 100.231 200.456
> Hallo2 200.231 400.456
>
> (die Punkte sind Tausendertrennzeichen, die Zahl ist 100231).
> PasteSpecial funktioniert nicht, ich vermute, da in der
> Zwischenablage nur das Textformat ist, und nicht das spezielle
> Excel-Format!? Übrigens geht es auch nicht, wenn ich das Hallo
> weglasse ;-)


Das Problem ist IMHO, dass VBA die Zwischenablage als US-Format interpretiert, aber im deutschen Format in XL einfügt.
Im US-Format ist das "," ein Tausendertrennzeichen, der "." das Trennzeichen für "Nach'komma'stellen". Fügt also VBA einen als Zahl
interpretierbaren Wert in eine als "Standard" (und somit auch potentiell als Zahl) formatierte Zelle ein, wird "." durch "," ersetzt
und umgekehrt.

Der nachfolgende Code umgeht dieses Problem, indem er die Zwischenablage zunächst als _Text_ in ein Dummy-Sheet einfügt, und
anschließend die eingefügten Daten als Werte in das ursprüngliche ActiveSheet kopiert.

Probier's mal aus:

Sub test()
Dim vActiveSheet As String
Dim vDummySheet As Worksheet


'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False

'aktuelles Sheet merken
vActiveSheet = ActiveSheet.Name

'Dummy-Sheet erstellen
Set vDummySheet = ThisWorkbook.Sheets.Add
'Zellen als Text formatieren
vDummySheet.Cells.NumberFormat = "@"
'Zwischenablage einfügen
vDummySheet.Paste
'eingefügte Werte kopieren
Selection.Copy

'ursprüngliches Sheet wieder aktivieren
Worksheets(vActiveSheet).Select

'Werte einfügen
Selection.PasteSpecial Paste:=xlValues

'Warnungen ausschalten
Application.DisplayAlerts = False
'Dummy-Sheet löschen
vDummySheet.Delete
'Warnungen wieder einschalten
Application.DisplayAlerts = False

'Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = False

End Sub

Hoffe, ich konnte Dir helfen.

Schönen Gruß
--
Michael
michael....@gmx.de

Matthias Fellbrich

unread,
Aug 17, 2004, 2:46:22 AM8/17/04
to
Hallo Eberhard,

erstmal Danke für die Antwort,

> bei mir klappt das einwandfrei:
>
> Tab1 A1=Hallo 100,231 200,456
> Tab2 A2=Hallo2 200,231 400,456
>(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)

in der News selber sind keine Tabs mehr vorhanden, und die Zeile wurde bei
dir am Stück in die erste Zelle kopiert. Wenn du z.B. in Notepad eine solche
Zeile erstellst, und dann Tabs dazwischen machst, und *das* dann so
kopierst, wie ich das beschrieben habe, müsste der Effekt auch auftreten....

Werde mir aber die Lösung von Michael erstmal anschauen, vielleicht klappt
das schon.

mfg
Matthias Fellbrich

Matthias Fellbrich

unread,
Aug 17, 2004, 2:52:44 AM8/17/04
to
Hallo Michael,

vielen Dank für die Erklärung und deine Lösung, die auch funktioniert ;-)

> Das Problem ist IMHO, dass VBA die Zwischenablage als US-Format
interpretiert, aber im deutschen Format in XL einfügt.

so eine Ahnung hatte ich auch schon, war mir aber nicht sicher, warum VBA
ein anderes Verhalten zeigt als das manuelle Einfügen. Da ich die Textdatei
auch selber erstelle, werde ich nochmal versuchen, diese mit Punkten als
Dezimalzeichen zu erstellen anstatt mit Kommas. Vielleicht klappt das auch.

mfg
Matthias Fellbrich

Matthias Fellbrich

unread,
Aug 17, 2004, 3:24:00 AM8/17/04
to
> Da ich die Textdatei
> auch selber erstelle, werde ich nochmal versuchen, diese mit Punkten als
> Dezimalzeichen zu erstellen anstatt mit Kommas. Vielleicht klappt das
auch.

das klappt.

Ich kann nur hoffen, das Microsoft dieses unterschiedliche Verhalten bei
zukünftigen Versionen beibehält ;-)

mfg
Matthias Fellbrich


Eberhard Funke

unread,
Aug 17, 2004, 4:50:36 AM8/17/04
to
Hallo Matthias

"Matthias Fellbrich" <m...@thyssenfahrtreppen.co> schrieb:

[....]


>> Tab1 A1=Hallo 100,231 200,456
>> Tab2 A2=Hallo2 200,231 400,456
>>(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)
>
>in der News selber sind keine Tabs mehr vorhanden, und die Zeile wurde bei
>dir am Stück in die erste Zelle kopiert. Wenn du z.B. in Notepad eine solche
>Zeile erstellst, und dann Tabs dazwischen machst, und *das* dann so
>kopierst, wie ich das beschrieben habe, müsste der Effekt auch auftreten....

Ich wollte mal probieren, ob das von Dir beobachtete Phänomen mit
PasteSpecial(xlValues) auch auftritt. Leider kriege ich keinen mit
Tabs getrennten Text in EINE Zelle.

Ich habe die Texte mit Tabs in Word, Editor und in WordPad eingegeben.
Beim Kopieren nach A1 teilt Excel jedes mal in vorauseilendem Gehorsam
die Texte nach A1:C1 auf. Wie kann man die automatische "Text in
Spalten" Konversion ausschalten? Unter Extras|Optionen und in der
Hilfe habe ich nichts gefunden.

Matthias Fellbrich

unread,
Aug 18, 2004, 3:16:55 AM8/18/04
to
Hallo Eberhard,

> Ich wollte mal probieren, ob das von Dir beobachtete Phänomen mit
> PasteSpecial(xlValues) auch auftritt. Leider kriege ich keinen mit
> Tabs getrennten Text in EINE Zelle.

von Hand geht das, wenn man in eine Zelle mit Doppelklick zum bearbeiten
reinklickt, und dann Strg-V.

> die Texte nach A1:C1 auf. Wie kann man die automatische "Text in
> Spalten" Konversion ausschalten? Unter Extras|Optionen und in der
> Hilfe habe ich nichts gefunden.

dazu habe ich leider auch nichts gefunden. Ich weiß nicht genau was du
gerade vorhast, aber das Aufteilen des Textes in die verschiedenen Spalten
war durchaus mein Ziel, sonst hätte ich ja auch keine Tabs benutzt ;-)

mfg
Matthias Fellbrich


Eberhard Funke

unread,
Aug 18, 2004, 6:11:09 AM8/18/04
to
Hallo Matthias

[.......]
>... aber das Aufteilen des Textes in die verschiedenen Spalten


>war durchaus mein Ziel, sonst hätte ich ja auch keine Tabs benutzt ;-)

das ging für mich aus Deinem Post nicht hervor, daher das
Mißverständnis.

0 new messages