Excel Makros "kopierfunktion"
Guten Tag
Ich möchte eine Funktion schreiben, also Makro, fürs Excel. Diese soll bei Klick auf eine Zelle den Zellinhalt in den Zwischenspeicher schreiben. Gibt es einen ActionListener oder Event der genau das sagt also Klick auf eine jede Zelle.
(opptional beim nächsten Klick den Inhalt einfügen.)
2 Antworten
Wenn Du nicht Klick auf Zelle allgemein, sondern Klick auf einen Button akzeptieren kannst (den Button am besten links oben in einem gemeinsamen fisierten Zeilen-und Spaltentitel platzieren, damit er beim Navigieren immer sichtbar bleibt), dann geht folgenmder Code (nimmt den Wert der markierten Zelle und kopiert den Text/die Zahl ohne Formate in das zur Auswahl abgefragte Ziel:
Sub AktiveZelleWertÜbertragenAufZiel()
Dim Ziel
Set Ziel = Application.InputBox("Ziel auswählen", , ActiveCell, , , , , 8)
Ziel.Value = ActiveCell.Value
Worksheets(Ziel.Worksheet.Name).Activate 'ggf löschen
Ziel.Select 'ggf löschen
End Sub
das funktioniert auch mit Ziel auf einem anderen Blatt. Dieses wird am Ende aktiviert.
Willst du aber die Quelle aktiviert halten, lösche die beiden letzten Zeilen oder kommentiere sie aus (mit ' davor, dem zwischen ä und return)
Was Du formuliert hast als Aufgabe, würde jede Arbeit mit xl unmöglich machen: Klick auf eine Zelle:in Zwischenablage kopieren, wieder Klick auf eine Zelle einfügen: das sind Standard-Operationen, die man nicht umfunktionieren darf. Gehen würde das schon (zumindest innerhalb eines Blattes, vielleicht auch extern, ich probiers NICHT aus!)
Ergänzung:
Makro einfügen: Rechtsklick auf Blattnamensfahne-Code anzeigen-Menü einfügen-Modul.
da drin (ggf unterhalb Option Explicit) das Makro einkopieren.
den Knopf(Button) weist Du folgendermassen zu:
[optional: Objekt links oben platzieren].
Rechtsklick: Makro zuweisen. In Liste gewünschtes auswählen. return.
Dann muss der 70-jährige entweder dazulernen oder es bleiben lassen. Ob kopieren, Ziel auswählen, Werte einfügen weniger kompliziert ist, bezweifle ich.
Oder will er eine ganze Auswahl als Werte einfügen? Ginge auch, müsste aber anders programmiert werden!
Aber was funktioniert denn nicht? Bei mir tuts einwandfrei (zZt auch xl2007)! Wäre schon wichtig und schön, sowas zu erfahren!
man muss in xl2007 ff allerdings .xlsm nehmen!
Das Ziel ist eine Tabelle mit 20 Textausschnitten in Zellen (deutsch /englisch) durch Klick auf ein Feld wird der Inhalt des Feldes im Zwischenspeicher gespeichert und dann per CTRL + V oder durch einen weiteren Klick in eine Datenbank eingefügt
(Frag nicht wieso ^^ )
leider hilft mir diese Beschreibung nicht weiter. Zwischenspeicher ist bei Makros eine Variable oder die Zwischenablage (meist , wenn es um Zellgruppen, also Felder geht).
Man kann das Makro über eine Schleife aktiv halten und mehrere Einfügungen per Definitionem untereinander setzen, so dass jedes mal die quellzelle und dann eine Msgbox mit Rückfrage weiter oder abbrechen beantworten. Aber zumindest am Anfang müssen QUELLE UND ZIEL definiert werden.
Es geht (fast) alles, aber dann muss man genau wissen, was von wo nach wohin und wie oft wiederholt kopiert werden soll.
Ist ne Menge Arbeit, da ist 20mal kopieren und Inhalte einfügen mit weitem Abstand schneller!
Falls jemand auch noch das Problemchen hat
Danach habe ich einfach meinen CopyBefehl eingefügt.
erst mal danke für den *
!
Das im Link genannte Makro funktioniert eben nur in diesem einen Arbeitsblatt. So habe ich das Deiner Frage nicht entnommen. Auch nicht, dass es um einen Bereich, und nicht um eine Einzelzelle geht.
"unwichtige Zellen" erkennt xl nicht: Es benötigt eine Definition. Entweder per Logik oder per Kennzeichnung.
Man könnte in einer Schleife
dim nehmen, Zelle
For Each Zelle in Bereich
'die Abfrage einbauen:
nehmen = Msgbox(c.value, vbxesno, "diesen Wert einfügen?"): if nehmen = vbno then goto weiter
'...einfügen an Ziel und Zielauswahl verschieben
weiter:
Next Zelle
Wenn Du das ausgeführt haben willst, stelle die Frage neu (ich lösche Benachrichtigungen per Mail ungelesen),
am besten mit Link hierher (ich kann mir die vielen Baustellen nicht mehr merken!)
Du sprichst von Java als Programmiersprache - ned woar? Excel wird aber mit VBA = Visual Basic for Applications programmiert.
Nein ich spreche immer von VBA programmiere aber sonst nur Java, ich wusst nur nicht wie die Abfrageelemente in VBA heissen deshalb schrieb ich alle BEgriffe die ich dafür kannte dazu!
Vielen Dank für die Idee, aber ich mache dieses Tool für einen 70 JährigeMann der Genau Excel öffnen kann und es muss möglichst einfach sein.
Deine Idee habe ich schon getestet. Funktioniert aber nicht so einfach.