Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellinhalt in anderes Arbeitsblatt kopieren mittels VBA
#1
Guten Abend Ihr Lieben!

Vielleicht kann mir jemand helfen?
Ich habe mal wieder ein kleines Problem.
Ich möchte einige Werte, die in der Spalte D vom Datenblatt 2 stehen in ein anderes Tabellenblatt 1  „Spalte C“ kopieren.
Dies soll aber nur geschehen, wenn ein Button angeklickt wird.
Z.B möchte ich dass,
Tabellenblatt 2                                            Tabellenblatt 1
D12        ------Kopiervorgang--------------->   C10
Oder
D3        ------Kopiervorgang--------------->      C15
Oder
D5        ------Kopiervorgang--------------->      C28
Oder
D8        ------Kopiervorgang--------------->      C20
.
.
-
usw. kopiert werden.

Kann man das mittels einem Button und Textfeld verwirklichen??
Im Anhang finden Sie die Excel Datei.
Danke für Ihre Hilfe.


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 11,16 KB / Downloads: 4)
Antworten Top
#2
Hallo al...,

Über einen Button kann man ein Makro aufrufen. Und in einem Makro kann man sehr sehr viel machen, unter anderem auch immer wieder die gleichen Zellen kopieren.

Ist eine Makrolösung für dich akzeptabel?

Kannst du deine Fragestelllung noch ein wenig näher beschreiben?
zB
1) Sollen bei jedem klick des Buttons immer wieder die gleichen Zellen an die gleichen Positionen verschoben werden und wenn ja welche?
2) Wofür hattest du das Textfeld vorgesehen?
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#3
Hallo

deine Kopiererei erinnert mich ein wenig an "Pipi Langstrumpf + Villa Kunterbunt"  ???
Normal sind fortlaufende ID Nummern als Liste, aber so durcheinander mit Lücken dazwischen???
Programme basieren notmalerweise auf logischer Zuordnung.  Ist das wirklich so gewünscht ????

mfg Gast 123
Antworten Top
#4
Hallo,

ich danke Dir für die schnelle Antwort.

-Eine Makrolösung ist auch akzeptabel.

1- Bei einem klick des Buttons soll eine Zelle z.B. D8 vom (Tabellenbatt2)   in  C20 vom (Tabellenbatt1) kopiert werden.

Das heißt, irgendwelcher Wert von der Spalte „D“ (Tabellenbatt2), den ich ausgewählt habe, soll in der Spalte „C“ (Tabellenbatt1) per Buttonklick kopiert werden und die Zeilen ändern sich wie unten dargestellt ist.

Datenblatt 2                                             Datenblatt 1
 
D12        ------Kopiervorgang--------------->   C10
Oder
D3        ------Kopiervorgang--------------->      C15
Oder
D5        ------Kopiervorgang--------------->      C28
Oder
D8        ------Kopiervorgang--------------->      C20

2- mit dem Feldtext war nur ein Vorschlag.
Antworten Top
#5
Hallo al...,

den Worten "zB" und "Oder" entnehme ich, dass du nicht immer die gleichen Zellen an die gleichen Positionen kopieren willst.
(Warum schreibst du das nicht?)

Dann muss dem Programm irgendwie mitgeteilt werden welche Zelle an welche Position kopiert werden soll.
Ich halte ein Eintragen der Positionen in Zellen oder Textfelder und dann drücken eines Buttons für aufwendiger als ein einfaches Strg+c und Strg+v.
Ein Button mit Makro ist dann sinnvoll, wenn vom Benutzer nicht die Addressen eingetragen werden müssen. Es also eine Regel gibt, anhand der das Programm ermittelt welche Zelle wohin kopiert werden soll, zB. Kopiere die aktive Zelle im Datenblatt1 ans Ende der Liste in Datenblatt2.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#6
Hallo
lieber Frager

ein Teil unserer Forum Arbeit besteht aus:  Hilfe zur Selbsthilfe - dazu ein Makro von mir das dein Anliegen beantwortet.
Es ist so einfach gehalten das du selbst siehtst und verstehst wie Vba funktioniert. Das du die Logik verstanden wie man aus einer Quellle ins Ziel kopiert, kannst du dieses Makro auf jede beliebige andere Zelle umschreiben. Damit kannst du dir deine eigenen Makros schreiben, bist von uns unabhaengig geworden und somit sage ich aus Überzeugung das du den Code verstehen wirst:

Willkommen im Club der VBA Wissenden

mfg  Gast 123

Code:
Sub Selbst_Kopieren()
Set QTab = Worksheets("Tabelle2")   'Name der Quell Tabelle
Set ZTab = Worksheets("Tabelle1")   'Name der Ziel Tabelle
 
 'Zuerst Zieltablle angeben - dann Quelltabellle
  TB1.Range("C10").Value = TB2.Range("D12").Value
  TB1.Range("C15").Value = TB2.Range("D3").Value
  TB1.Range("C28").Value = TB2.Range("D5").Value
  TB1.Range("C20").Value = TB2.Range("D8").Value

End With
End Sub
Antworten Top
#7
Nachtrag

mir ist gerade aufgefallen das im Code ein Fehler ist, der letzte Befehl "End With" muss gelöscht werden!! Sonst Fehlermeldung!!

Hier noch eine zweite Variante zum kopieren, und die Erklaerung des Unterschied der beiden Methoden:
1. Methode)  übertraegt nur Werte indem man sagt:  lade in die Zielzelle den Wert der Quell Tabelle  (übertragen ohne Copy Funktion) dabei wird nur der Wert übertragen, das Format, Schriftfarbe etc. bleibt unberührt. Es geht hierbei nur um die reinen Werte, als Text oder Zahl !!
2. Methode)  ist der übliche Kopie Vorgang wie man das manuell gewohnt ist, von Zelle zu Zelle. Wo Format, Schrift, Innenfarbe ect., 1:1 kopiert wird.

Für einfache Sachen wo nur die Werte kopiert werden sollen eignet sich die 1 Mehode als die günstigere Variante.
  
mfg  Gast 123


Code:
Sub Selbst_Kopieren_2()
Set QTab = Worksheets("Tabelle2")   'Name der Quell Tabelle
Set ZTab = Worksheets("Tabelle1")   'Name der Ziel Tabelle
 
 'Zuerst Zieltablle angeben - dann Quelltabellle
  TB2.Range("D12").Copy Destination:=TB1.Range("C10")
  TB2.Range("D3").Copy Destination:=TB1.Range("C15")
  TB2.Range("D5").Copy Destination:=TB1.Range("C28")
  TB2.Range("D8").Copy Destination:=TB1.Range("C20")

End Sub
Antworten Top
#8
Wo ist in beiden Makros TB1 und TB2 definiert?
Warum wird ZTab und QTab gesetzt, aber nicht benutzt?
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Gast 123
Antworten Top
#9
Hallo Ralf

danke für deine Aufmerksamkeit, dumme kleine Flüchtigkeitsfehler.  Muss besser aufpassen !!

Zitat:Set QTab = Worksheets("Tabelle2")   'Name der Quell Tabelle
Set ZTab = Worksheets("Tabelle1")   'Name der Ziel Tabelle

Richig deklariert werden muss es natürlich so:
Set TB2 = Worksheets("Tabelle2")   'Name der Quell Tabelle
Set TB1 = Worksheets("Tabelle1")   'Name der Ziel Tabelle

im Kopf hatte ich beim Programmieren das Wort "Quelle und Ziel" und habe oben deshalb QTab und ZTab geschrieben, waehrend ich unten gewohnheitsmaessig die Variablen "TB1 und TB2" verwendet habe.  Der obere Teil muss geandert werden, damit es einwandfrei funktioniert.

Danke für deine Aufmerksamkeit !!

mfg  Gast 123
Antworten Top
#10
Hallo Gast 123,
 
ich habe hier versucht die Variablen zu definieren wie folgend:


Sub Selbst_Kopieren_2()

Dim TB1 As Worksheet, TB2 As Worksheet

Set TB2 = Worksheets("Tabelle2")   'Name der Quell Tabelle
Set TB1 = Worksheets("Tabelle1")   'Name der Ziel Tabelle
 
 'Zuerst Zieltablle angeben - dann Quelltabellle
  TB2.Range("D12").Copy Destination:=TB1.Range("C10")
  TB2.Range("D3").Copy Destination:=TB1.Range("C15")
  TB2.Range("D5").Copy Destination:=TB1.Range("C28")
  TB2.Range("D8").Copy Destination:=TB1.Range("C20")

End Sub



 
Dann habe ich den Code durch ein Button ausgeführt und es klappt prima. Siehe Anhang --->dann klick aufs Button
Aber ich will nicht immer, dass die gleichen Zellen an die gleichen Positionen kopieren werden.
Das Programm muss irgendwie mitgeteilt werden welche Zelle an welche Position kopiert werden soll.


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 18,1 KB / Downloads: 7)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste