Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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

Copy Buffer auslesen

Copy Buffer auslesen
03.02.2014 12:06:23
Grissu
Hallo,
Ich habe folgendes Problem:
Es User markiert in einem Blatt einen Bereich und betätigt Ctrl+C.
Danach geht er in ein anderes Blatt ändert die Zellenselektion noch mehrmals (ohne den Copy-Buffer zu verändern) und betätigt dann einen Button hinter den sich ein VBA Makro befindet.
Gibt es eine Möglichkeit aus dem Makro jetzt den Range des zuvor mittels Ctrl+C kopierten Bereichs auszulesen und funktioniert das auch wenn das Copy in einem anderen Worksheet/Workbook gemacht wurde?
Danke für die Hilfe
Grissu

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy Buffer auslesen
03.02.2014 12:10:45
Rudi
Hallo,
Code für den Button:
Activesheet.Paste
Gruß
Rudi

AW: Copy Buffer auslesen
03.02.2014 12:45:26
Grissu
Hallo Rudi,
danke für die rasche Antwort. Ich habe meine Frage anscheinend nicht richtig formuliert. Ich will den Bereich nicht sofort Pasten, sondern muß mir den Range intern sicher, darin noch Daten manipulieren und danach vom Makro aus ein Copy- Paste machen.
Danke
Christian

Bahnhof
03.02.2014 12:52:15
Rudi
Hallo,
ich versteh kein Wort.
Gruß
Rudi

AW: Copy Buffer auslesen
03.02.2014 21:53:19
firmus
Hi Grissu,
wenn Du mit CTRL-C einen markierten Bereich in den Zwischenbereich kopiert hast,
dann kann dieser nicht mehr verändert werden.
Wenn Du den Bereich, der vorher ausgewählt war und per CTRL-C kopiert wurde,
verändert wurde, dann stehen diese Änderungen NICHT im Zwischenbereich.
Damit die Änderungen dort hin kommen, ist ein erneutes Markieren und CTRL-C nötig.
Das Paste danach ist trival.
Gruß
Firmus

Anzeige
AW: Copy Buffer auslesen
03.02.2014 21:53:58
firmus
noch offen

AW: Copy Buffer auslesen
04.02.2014 14:20:14
Grissu
Hallo Zusammen,
ich muß für mein Problem noch etwas klar stellen.
Die Arbeitsmappe habe ich selber übernommen, sie stammt also nich von mir.
Es gibt in dieser Mappe Unmengen an Buttons und Makros die sich dahinter verbergen. Weiters werden auch von diverse Events Makros getriggert.
Nun kommt es immer wieder einmal vor das eine Anwender einen Bereich selektiert hat und diesen dann mittels Ctrl+C kopiert (es wird der Laufrahmen um diesen Bereich gezeichnet. Dieses Copy kann im selben Sheet, in einem Sheet im selben Workbook oder aber auch in einen Sheet eines anderen Workbooks in derselebn Excel Instanz sein). Sobald er dann einen dieser Button betätigt und der Makro beendet ist, ist der Laufrahmen um den zuvor kopierten Bereich verschwunden und damit ist ein Paste vom Anwender her nicht mehr möglich.
Meine Idee war jetzt am Anfang von einem solchen Makro einen Code einzubauen, der genau den Range, der vom Laufrahmen umschlossen ist, zu sichern und diesen am Ende des Makros zu restaurieren (also selber nochmals ein COPY auf den Bereich ausführen).
Ich habe bis jetzt aber nichts gefunden wie ich mir den Range des vom Laufrahmen umschlossenen Bereichs im VBA auslesen kann.
Kennt ihr das etwas?
Danke
Grissu

Anzeige
AW: Copy Buffer auslesen
05.02.2014 08:32:28
Firmus
Hi Grissu,
ich habe mal "zusammengestöpselt".
Ausführlich, damit es einfach nachzuvollziehen ist.
Dim anzzeil, anzspal As Long
Dim startzeil, startspal As Long
Dim endzeil, endspal As Long
startspal = ActiveCell.Areas(1).Column
startzeil = ActiveCell.Areas(1).Row
anzspal = Selection.Columns.Count
anzzeil = Selection.Rows.Count
endspal = startspal + Selection.Columns.Count - 1
endzeil = startzeil + Selection.Rows.Count - 1
Range("a1").Select 'Selection verändern
Selection.Copy 'Copy setzen
Range(Cells(startzeil, startspal), Cells(endzeil, endspal)).Select
Selection.Copy
Hilft's?
Gruss,
Firmus

Anzeige
AW: Copy Buffer auslesen
05.02.2014 10:32:06
Grissu
Hallo Firmus,
habe deinen Code gleich ausprobiert.
Funktioniert super, wenn der kopierte Bereich vor dem Aufruf des Makros gleich der Selektion ist.
Jetzt gibt es aber Kollegen, die nach dem Kopieren noch die Selektion verändern und danach erst den Makro aufrufen z.B.:
In einem Sheet ist der Bereich A1:D10 selektiert.
Der User betätigt Ctrl-C, damit umfasst der Laufrahmen den Bereich A1:D10.
Danach selektiert er auf die Zelle G1, der Laufrahmen umfasst nachwievor den Bereich A1:D10.
Wenn jetzt der Makro (mit deinem Code) exekutiert wird, so ist danach die Zelle G1 mit dem Laufrahmen versehen und nicht A1:D10.
Gibt's noch Ideen wie man das in den Griff bekommen kann?
Danke
Grissu

Anzeige
AW: Copy Buffer auslesen
05.02.2014 21:28:21
Firmus
Hi Grissu,
mit dieser zusätzlichen Anforderung musst Du das Problem komplett anders angehen.
Die aktuelle Position im XLS-Blatt interessiert nicht mehr, sondern nur noch der
Inhalt der Zwischenablage (Clipboard).
Ich habe ein Beispiel - auch mit Hilfe von Tante Google + Grundkenntnissen realisiert.
Es wird dabei unterschieden, ob ein Bereich markiert und per CTRL-C/Copy in die Zwischenablage
gestellt wurde, oder ob diese komplett leer ist, bzw. kein Text,kein XLS-Range enthält.
Zwei Dinge sind dabei anzumerken:
1. Ein Bildausschnitt (z.B. mit SnippingTool) wird als "leer" erkannt (es ist kein Text da)
2. Text aus einer einfachen Zeile ( z.B. aus NOTEPAD) und eine XLS-Range können nicht unterschieden werden.
Für die Praxis: Falls ein Textfragment in der Zwischenablage ist UND in XLS nichts markiert und kopiert wurde, KANN es zu falschen Ergebnissen kommen.
Das auch noch zu bereinigen haben meine aktuellen Kenntnisse nicht ausgereicht.
VBA-Code zum Testen:
Option Explicit
Sub KopieClipboard()
Dim MyData As New DataObject
Dim strClip As Variant
Set MyData = Nothing
On Error Resume Next        'Standard Error-Routine abschalten, wg. FALLS Clipboard leer
MyData.GetFromClipboard
'kann zwischen einfachem Text und Cell-Range NICHT unterscheiden.
'Grafikausschnitte (SNAPtool) wird als falsch erkannt, ok.
If MyData.GetFormat(1) = True And Err = 0 Then
Range("b15").Select     'Test-Zielzelle
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else
MsgBox "kein TXT oder XLS-cells im Zwischenspeicher - exit."
Exit Sub
End If
On Error GoTo 0             'Standard Error-Routine wieder aktivieren.
End Sub
Lass von Dir hören.
Gruß
Firmus

Anzeige
AW: Copy Buffer auslesen
06.02.2014 10:35:24
Grissu
Hi Firmus,
also so funktioniert das leider überhaupt nicht.
Für meinen Fall habe ich meinen Makro, der den Laufrahmen um den kopierten Bereich verschwinden lässt, vor die 'Test-Zielzelle kopiert.
Nach einen Test habe ich weder den Laufrahmen noch kann ich mit Ctrl-V etwas pasten.
Das ist meiner Meinung nach der falsche Weg.
Hast Du eine Ahnung ob man im Excel Funtionen, wie z.B. "Kopieren" auf einen eigene VBA-Makro umlenken kann? Dann hätte ich nähmich die möglichkeit den Range zwischenzuspeichern.
Werde dafür eine eigene Anfrage stellen.
Danke nochmals für die Mühe
Grissu

Anzeige
AW: Copy Buffer auslesen
06.02.2014 11:09:28
Philipp
Hi Grissu,
ich weiß nicht, ob es hilft, aber Du könntest ein Makro auf STRG+C legen. Damit legst Du die normale Kopierfunktion lahm und könntest dein Makro aufrufen.
Gruß
Philipp

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige