Excel Makros "kopierfunktion"

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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!)

xleli 
Fragesteller
 22.03.2012, 12:02

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.

0
Iamiam  22.03.2012, 13:10
@xleli

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!

0
xleli 
Fragesteller
 22.03.2012, 13:40
@Iamiam

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 ^^ )

0
Iamiam  22.03.2012, 22:36
@xleli

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!

0
xleli 
Fragesteller
 23.03.2012, 09:41
@Iamiam

Mit diesem Befehl kriege ich die aktuelle Auswahl in den Cache

Selection.Copy

Jetzt muss ich noch erreichen das bei jeder Auswahl dieser Befehl ausgeführt wird und danach in allen unwichtigen Zellen die Auswahl deaktivieren.

0
Iamiam  23.03.2012, 12:08
@xleli

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!)

0
Iamiam  22.03.2012, 12:48

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.

0

Du sprichst von Java als Programmiersprache - ned woar? Excel wird aber mit VBA = Visual Basic for Applications programmiert.

xleli 
Fragesteller
 22.03.2012, 12:00

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!

0