Frage von rado66, 47

VBA Code kopieren?

Hallo an alle VBA Profis. ich suche nun schon seit Stunden nach einem Beispiel, leider Ergebnislos. Bitte dringend um Hilfe.

Ausgangsituation :

EXCEL-Datei mit 4 Blättern . 1.Blatt : Dateneingabe mit Dropdownfeld : ( Leo, Ben, Lisa ) 2. Blatt : Leo 3. Blatt : Ben 4. Blatt : Lisa

Mein Wunsch ist es den Zellinhalt a3 aus dem Blatt Dateneingabe mit einem Command.Button ( Datenübergabe ) in das jeweilige Blatt ( Leo, Ben, Lisa ) in a3 zu kopieren.

das Dropdown befindet sich in d5. Soll heißen : wenn in d5 Lisa ausgewählt ist, dann kopieren in Blatt Lisa a3; wenn in d5 Leo ausgewählt ist, dann kopieren in Blatt Leo a3; wenn in d5 Ben ausgewählt ist, dann kopieren in Blatt Ben a3;

ich hoffe mich verständlich ausgedrückt zu haben.

Kann mir jemand helfen ??? bin schon völlig verzweifelt.

Vielen Dank im Voraus

Gruß Ralf

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Ninombre, Community-Experte für Excel, 26

Wenn die Tabellenblätter genau so heißen, wie die auszuwählenden Inhalte in D5, dann reicht eine Zeile Code:

Sheets(Range("D5").Value).Range("A3").Value = Range("A3").Value

Wenn die Namen nicht direkt übereinstimmen, kannst Du in etwa so vorgehen:



Dim tabellenblatt As String 'beliebige Variable für die Tabellenblätter
Select Case Range("D5").Value
Case "Lisa": tabellenblatt = "Lisas Blatt"
Case "Ben": tabellenblatt = "Bens Blatt"
End Select
Sheets(tabellenblatt).Range("A3").Value = Sheets("Tabelle1").Range("A3").Value

Tabelle1 sollte dann der konkrete Name der Eingabetabelle sein.

Kommentar von rado66 ,

Vielen Dank an alle die mir geantwortet haben. Tut mir leid das ich mich erst jetzt melde, ich war berufluch unterwegs.

Ich habe mich für Variante :

Sheets(Range("D5").Value).Range("A3").Value = Range("A3").Value

entschieden. Sehr einfach und genial.

Kommentar von Ninombre ,

Freut mich, dass es funktioniert! Auch schön, dass Du eine Rückmeldung gegeben hast (sonst sitzt man manchmal da, ohne zu wissen, ob man eigentlich das Problem des Fragestellers kapiert  hat und zur Lösung beitragen konnte)

Antwort
von AnonYmus19941, 30

Dafür gibt es doch den Makrorekorder.

Zunächst musst du den Namen in einer Variablen speichern sowie den Wert kopieren:

Dim name as String
Dim wert as String
name = Cells(5, 4) 'koennte auch anders herum sein...
wert = Cells(3, 1) '(die Zahlen)

Dann einfach das entsprechende Blatt aufrufen und dort hineinkopieren...

Die Befehle weiß ich gerade nicht auswendig und ich kann auch nicht nachschauen, aber da wird dir der Makrorekorder weiterhelfen...

Kommentar von rado66 ,

Vielen Dank an alle die mir geantwortet haben. Tut mir leid das ich mich erst jetzt melde, ich war berufluch unterwegs.

Ich habe mich für Variante :

Sheets(Range("D5").Value).Range("A3").Value = Range("A3").Value

entschieden. Sehr einfach und genial.

Antwort
von maximilianus7, 21

anonymos geht wohl davon aus, dass du nicht VBA programmieren kannst. ohne kenntnisse kommst du auch mit dem recorder nicht weit.

und irgendein code, der auf dein problem zugeschnitten ist wirst du so nicht finden.

oder ich hab dein problem nicht verstanden.

Antwort
von D3R31N3, 21

Es ist schon recht spät, aber ich versuche mal ein paar Denkanstöße zu liefern.

Ist dein Dropdownmenü überhaupt eine Zelle, oder nur ein
ActiveX-Steuerelement, das auf die Größe der Zelle skaliert ist? In dem
Fall musst du den Wert aus dem Steuerelement auslesen.

Zum Kopieren auf ein neues Blatt:

Dim name As String

'Hier irgendwie den Namen aus der Dropdownliste der Variable "name" zuweisen

Set Quelltab = ActiveWorkbook.Worksheets("Datenübergane")
Set Zieltab = ActiveWorkbook.Worksheets(name)

'Kopiere Wert vom Quelltab in den Zieltab:

Zieltab.Cells(1, 3).Value = Quelltab.Cells(1, 3).Value

Der Code von mir übernimmt nur die Werte, bei der Formatierung musst du diese zusätzlich mitkopieren (Google hilft hier).

Kommentar von rado66 ,

Vielen Dank an alle die mir geantwortet haben. Tut mir leid das ich mich erst jetzt melde, ich war berufluch unterwegs.

Ich habe mich für Variante :

Sheets(Range("D5").Value).Range("A3").Value = Range("A3").Value

entschieden. Sehr einfach und genial.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten