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

Text einer Zelle in Zwischenablage kopieren

1,536 views
Skip to first unread message

Carlos Naplos

unread,
Feb 28, 2009, 8:50:52 AM2/28/09
to
Hallo NG

Wie kopiere ich den Inhalt einer Zelle (als Text) in die Zwischenablage?

Ich möchte, dass der Inhalt bestimmter Zellen, wenn ich darauf klicke automatisch in die Zwischenablage kopiert wird.

Vielen Dank für Eure Hilfe
Carlos

Eberhard Funke

unread,
Feb 28, 2009, 9:05:53 AM2/28/09
to
Am Sat, 28 Feb 2009 14:50:52 +0100 schrieb Carlos Naplos:

> Wie kopiere ich den Inhalt einer Zelle (als Text) in die Zwischenablage?
>
> Ich möchte, dass der Inhalt bestimmter Zellen, wenn ich darauf klicke automatisch in die Zwischenablage kopiert wird.


Hallo Carlos,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Copy
End Sub


--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de

Klaus Blaschke

unread,
Feb 28, 2009, 10:07:48 AM2/28/09
to
Am 28.02.2009 15:05:53 schrieb Eberhard Funke:

> Am Sat, 28 Feb 2009 14:50:52 +0100 schrieb Carlos Naplos:
>> Wie kopiere ich den Inhalt einer Zelle (als Text) in die Zwischenablage?

> Hallo Carlos,


>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> Target.Copy
> End Sub

Hallo Eberhard,

ich will mich jetzt auch ein wenig mit VBA beschäftigen,
habe aber keinerlei Wissen darüber.
Probehalber habe mal Deine Code kopiert, aber da passiert
nichts.
Was muss man tun damit das Makro läuft?

Gruß
Klaus

Eberhard Funke

unread,
Feb 28, 2009, 11:29:22 AM2/28/09
to
Am Sat, 28 Feb 2009 16:07:48 +0100 schrieb Klaus Blaschke:

>>> Wie kopiere ich den Inhalt einer Zelle (als Text) in die Zwischenablage?
>

>> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>> Target.Copy
>> End Sub
>

> ich will mich jetzt auch ein wenig mit VBA beschäftigen,
> habe aber keinerlei Wissen darüber.
> Probehalber habe mal Deine Code kopiert, aber da passiert
> nichts.
> Was muss man tun damit das Makro läuft?

Hallo Klaus,

da hast Du Dir aber nicht das Leichteste für den Anfang ausgesucht.

Bei dem Makro handelt es sich um eine sog. Ereignisprozdur. Wie der Name
des Makro sagt, wird es ausgelöst, wenn Du in eine Zelle klickst, d. h. die
Auswahl änderst (Selection_Change).

Die Ereignisprozedur gehört in das Modul eines Tabelleblattes und gilt nur
für dieses Tabellenblatt (daneben gibt es noch eine andere Möglichkeit,
aber davon sehe ich hier mal ab).

Schreib in irgendeine Zelle von Tabelle1 irgendetwas und setze den Cursor
anschliessend in eine andere Zelle.

Klick mit der rechten Maus unten links auf den Reiter von Tabelle1, wähle
"Code anzeigen", kopiere das Makro in das sich öffnende Fenster und kehre
mit Alt+F11 in die Tabelle1 zurück.

Jetzt klick auf die zuvor gefüllte Zelle. (Du siehst den Laufrahmen um
diese Zelle, genau so, wie wenn Du die Zelle über das Menü oder mit Strg+C
kopierst.) Carlos hat nicht geschrieben, was er nach dem Kopieren weiter
machen will. Angenommen, er will den Zellinhalt nach Tabelle2 kopieren,
dann wechsle zu Tabelle2, wähle irgendeine Zelle und kopiere den Inhalt der
Zwischenablage über das Menü oder mit Strg+V dort ein.

Was aber nicht geht: Du kannst den mit dieser Prozedur in die
Zwischenablage kopierten Zellinhalt nicht in eine anderer Zelle von
*Tabelle1* kopieren; denn sowie Du eine andere Zelle in Tab1 anklickst (-->
Selection_Change), wird das Makro gestartet und kopiert jetzt den Inhalt
der neuen Zelle in die Zwischenablage.

Langer Rede kurzer Sinn:
Probier erst mal etwas einfacheres.

Z. B. für eine Ereignisprozedur:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox "Bingo"
End Sub


Zum Kopieren in die Zwischablage (das kommt jetzt in ein "normales" Modul,
also nicht in das Modul eines Tabelleblattes):
Sub in_die_ZWA_kopieren()
ActiveCell.Copy
End Sub
Dieses Makro wirkt jetzt in allen Tabellenblättern und Du kannst jetzt aus
der Zwischenablage in jedes beliebige Blatt (also auch in das Quellblatt)
einkopieren.

Die heutige Stunde schliesst mit zwei Tipps aus eigener Erfahrung:
Eine ausgezeichnete Einführung in VBA findest Du unter:
ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b0129911.pdf
Ansonsten: Zeichne Aktionen mit dem Makrorecorder auf und sieh Dir den Code
an.

Carlos Naplos

unread,
Feb 28, 2009, 12:06:19 PM2/28/09
to
Eberhard Funke schrieb:

> Am Sat, 28 Feb 2009 14:50:52 +0100 schrieb Carlos Naplos:
>
>> Wie kopiere ich den Inhalt einer Zelle (als Text) in die Zwischenablage?
>>
>> Ich möchte, dass der Inhalt bestimmter Zellen, wenn ich darauf klicke automatisch in die Zwischenablage kopiert wird.
>
>
> Hallo Carlos,
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> Target.Copy
> End Sub
>
>

Hallo Eberhard

Erstmal danke für die schnelle Antwort.

Wie kann ich erreichen, dass nur der Text (also Target.Text) kopiert wird?

(Den kann ich dann irgendwo mit Strg-v einfügen, ohne dort die Formatierung zu ändern. Und die Zwischenablage würde mit "Application.CutCopyMode = False" nicht gelöscht.)

Gruß
Carlos

Carlos Naplos

unread,
Feb 28, 2009, 12:54:52 PM2/28/09
to
So, ich habe es rausgefunden:

Dim MyData As DataObject

Set MyData = New DataObject
MyData.SetText Target.Text
MyData.PutInClipboard

Das hat allerdings zunächst nicht funktioniert: "DataObject" war unbekannt, auch für die Hilfe (F1).

Erst nachdem ich eine UserForm angelegt hatte, funktioniert es. (Danach konnte ich die Useform wieder löschen.)

Gruß
Carlos

Eberhard Funke

unread,
Feb 28, 2009, 1:41:07 PM2/28/09
to

Hallo Carlos,

Dazu:
http://www.online-excel.de/excel/singsel_vba.php?f=28

Verstehe ich richtig: Du willst auf eine (formatierte) Textzelle klicken
(Ereignis) und den Text (per Ereignis) in eine anders formatierte Zelle
kopieren. Dabei Soll das Format der neuen Zelle erhalten bleiben.

Dann ging auch:

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Copy
End Sub

Private Sub Worksheet_BeforeRightClick _
(ByVal Target As Range, Cancel As Boolean)
Target.PasteSpecial Paste:=xlValues

Klaus Blaschke

unread,
Feb 28, 2009, 2:00:46 PM2/28/09
to

Hallo Eberhard,
danke für Deine Erläuterungen!

Am 28.02.2009 schrieb Eberhard Funke:

>>> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>>> Target.Copy
>>> End Sub

[...]

> Was aber nicht geht: Du kannst den mit dieser Prozedur in die
> Zwischenablage kopierten Zellinhalt nicht in eine anderer Zelle von
> *Tabelle1* kopieren; denn sowie Du eine andere Zelle in Tab1 anklickst (-->
> Selection_Change), wird das Makro gestartet und kopiert jetzt den Inhalt
> der neuen Zelle in die Zwischenablage.

Mit der *Tabelle1* kann man dann aber nichts mehr anfangen. Da wird
nur noch kopiert und kopiert und ...

[...]

> Probier erst mal etwas einfacheres.

> Zum Kopieren in die Zwischablage (das kommt jetzt in ein "normales" Modul,
> also nicht in das Modul eines Tabelleblattes):
> Sub in_die_ZWA_kopieren()
> ActiveCell.Copy
> End Sub

Kopieren habe ich mal mit dem Makrorecorder aufgezeichnet:

Sub Copy()
Selection.Copy
End Sub

> Eine ausgezeichnete Einführung in VBA findest Du unter:
> ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b0129911.pdf

Danke, werde ich morgen mal in ruhe studieren.

Gruß
Klaus

Eberhard Funke

unread,
Feb 28, 2009, 3:28:31 PM2/28/09
to
Am Sat, 28 Feb 2009 20:00:46 +0100 schrieb Klaus Blaschke:

> Mit der *Tabelle1* kann man dann aber nichts mehr anfangen. Da wird
> nur noch kopiert und kopiert und ...

... eben !

Carlos Naplos

unread,
Mar 2, 2009, 10:53:35 AM3/2/09
to
Hallo Eberhard

Danke für die Mühe

Es ging mir darum, nur den Text (also Target.Text) in die Zwischenablage zu kriegen, so wie in Deinem Link beschrieben. (Dann kann man ihn z.B. auch in Word mit Strg-v schnell einfügen, wobei die Formatierung von Word übernommen wird.)

Gruß
Carlos

0 new messages