Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelleninhalt per Klick in die Zwischenab

Forumthread: Zelleninhalt per Klick in die Zwischenab

Zelleninhalt per Klick in die Zwischenab
24.02.2022 08:42:47
Jens
Hallo zusammen,
ich bin hier auf folgenden VBA-Code gestoßen, den ich nur auf die Spalten und Zeilen meiner Tabelle angepasst habe. Ich konnte leider nicht auf den Beitrag antworten.
https://www.herber.de/forum/archiv/980to984/981579_Zelleninhalt_per_Klick_in_die_Zwischenablage.html

Option Explicit
Dim MyData As DataObject
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("4:733")) Is Nothing Or IsEmpty(Target) Then Exit Sub
Cancel = True
Set MyData = New DataObject
MyData.SetText ActiveCell.Text
MyData.PutInClipboard
MsgBox "[" & ActiveCell.Text & "]" & vbCrLf & _
"in der Zwischenablage!", vbOKOnly + vbInformation, "Copy Done!"
End Sub
Ich möchte damit den Inhalt der Zelle per Doppelklick in die Zwischenablage kopieren.
Bei Mir erscheint nun folgender Fehler:
Fehler beim Kompilieren
Benutzerdefinierter Typ nicht definiert
Er markiert dann folgenden Bereich:

MyData As DataObject
ggf. würde ich gerne um einen weiteren Bereich erweitern.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt per Klick in die Zwischenab
24.02.2022 08:55:40
RPP63
Moin!
Dass im Code des verlinkten Beitrags folgendes obenan steht, hast Du geflissentlich überlesen?

'Verweis auf "Microsoft Forms 2.0 Object Library" erforderlich
Strg+c ist Dir zu schwierig?
Gruß Ralf
AW: Zelleninhalt per Klick in die Zwischenab
24.02.2022 09:44:59
volti
Hallo Jens,
es geht auch ohne Verweis...
Code:

[Cc]

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("4:733")) Is Nothing Or IsEmpty(Target) Then Exit Sub Cancel = True With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText ActiveCell.Value .PutInClipboard End With MsgBox "[" & ActiveCell.Text & "]" & vbCrLf & _ "in der Zwischenablage!", vbOKOnly + vbInformation, "Copy Done!" End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Zelleninhalt per Klick in die Zwischenab
24.02.2022 09:51:14
Daniel
wer immer sich den Schlüssel merken kann (ich nicht)
alternativ kann man hier auch einfach eine Userform hinzufügen. Dann wird der Verweis automatisch gesetzt (das kann ich mir besser merken)
und wie schon angemerkt wurde, wenn man den unveränderten Zellinhalt in die Zwischenablage schreiben will, müsste ein einfaches Kopieren der Zelle ausreichen, also selber STRG+C drücken oder per Code ein einfaches ActiveCell.Copy.
das hier braucht man nur, wenn man den Zelltext noch verändern will, oder wenn es wichtig ist, dass nur der Text alleine in der Zwischenablage landet und nicht die Formatierung.
Gruß Daniel
Anzeige
Zelleninhalt per Klick in die Zwischenab
24.02.2022 14:46:45
Jens
Vielen Dank das hat funktioniert!
Anzeige
Anzeige

Infobox / Tutorial

Zelleninhalt per Klick in die Zwischenablage kopieren


Schritt-für-Schritt-Anleitung

Um den Inhalt einer Zelle per Doppelklick in die Zwischenablage zu kopieren, kannst Du den folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge in das entsprechende Arbeitsblattmodul den folgenden Code ein:
Option Explicit
Dim MyData As Object

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("4:733")) Is Nothing Or IsEmpty(Target) Then Exit Sub
    Cancel = True
    Set MyData = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    MyData.SetText ActiveCell.Text
    MyData.PutInClipboard
    MsgBox "[" & ActiveCell.Text & "]" & vbCrLf & "in der Zwischenablage!", vbOKOnly + vbInformation, "Copy Done!"
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Doppelklicke auf eine Zelle in den Zeilen 4 bis 733, um den Inhalt in die Zwischenablage zu kopieren.

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert: Dieser Fehler tritt auf, wenn der Verweis auf die "Microsoft Forms 2.0 Object Library" fehlt. Um dies zu beheben, gehe zu Extras > Verweise im VBA-Editor und aktiviere den entsprechenden Verweis.

  • Code funktioniert nicht: Stelle sicher, dass Du den Code im richtigen Arbeitsblattmodul eingefügt hast und dass Du die richtige Zellbereiche definiert hast.


Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du alternativ den Zellinhalt einfach mit STRG + C kopieren. Wenn Du jedoch den Zellinhalt vor dem Kopieren bearbeiten möchtest, ist der VBA-Code die bessere Wahl.

Eine weitere Möglichkeit ist die Verwendung einer Userform, die automatisch die erforderlichen Verweise setzt. Diese Methode wird oft als benutzerfreundlicher angesehen.


Praktische Beispiele

Hier sind einige praktische Anwendungen des Codes:

  • Inhalt von Rechnungen kopieren: Nutze den Code, um den Betrag einer Rechnung schnell zu kopieren, ohne die Formatierung zu übertragen.
  • Daten aus großen Listen extrahieren: Wenn Du mit großen Datenmengen arbeitest, kannst Du schnell spezifische Zelleninhalt per Klick in die Zwischenablage kopieren.

Tipps für Profis

  • Experimentiere mit der Anpassung des Zellbereichs im Code, um mehr oder weniger Zellen einzuschließen.
  • Überlege, wie Du den Code erweitern kannst, um z.B. auch das Format der Zelle zu speichern oder weitere Informationen zu kopieren.
  • Nutze Application.CutCopyMode = False, um den Kopiermodus zu beenden, wenn Du das möchtest.

FAQ: Häufige Fragen

1. Wie kann ich den Zellinhalt in eine andere Anwendung einfügen? Du kannst den kopierten Inhalt in jede andere Anwendung einfügen, indem Du STRG + V verwendest.

2. Was muss ich tun, wenn der VBA-Code nicht funktioniert? Überprüfe, ob die richtigen Verweise gesetzt sind und ob Du den Code im richtigen Arbeitsblattmodul eingefügt hast. Achte darauf, den Code genau zu kopieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige