Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: variable Zelle kopieren mit Makro

variable Zelle kopieren mit Makro
02.10.2004 21:29:34
Korl
Hallo,
ich habe eine Excelmappe mit 2 Tabellenblättern.
Im Tabellenblatt "1" befindet sich eine Datenbank mit 2 Spalten (Spalte "A"=Artikel und Spalte "B"=Nr.)
Aus dieser Datenbank möchte ich einzelne "Artikel mit der Artikelnummer" in Tabellenblatt 2 untereinander kopieren, mittels Doppelklick oder eben Tastenkombination.
Mir fehlt jetzt eigentlich nur, wie benenne ich die aktuelle Zelle der Spalte A und B, damit ich sie ins Tabellenblatt "2" kopieren kann.
Danke schon mal für Eure Mühe.
Gruß Korl
Anzeige
AW: variable Zelle kopieren mit Makro
PeterW
Hallo Korl,
was du brauchst dürfte AciveCell.Row sein. Wenn du mehr Hilfe brauchst schreibe bitte, wohin in Blatt 2 kopiert werden soll.
Gruß
Peter
AW: variable Zelle kopieren mit Makro
ransi
hallo korl
so kannst du die zellen aus spalte a und b mit doppelclick in die zwischenablage kopieren wenn die aktive zelle in spalte a oder b liegt.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy
Cancel = True
End Sub

ransi
Anzeige
AW: variable Zelle kopieren mit Makro
02.10.2004 22:56:43
Korl
Hallo Ransi,
so weit, so gut. Ich dachte, ich würd es allein weiter schaffen?
Jetzt soll das ganze in Tabelle 2 abgelegt werden.
Dort habe ich in Spalte „A“ eine laufende Nr. und ab Spalte B soll es dann eingefügt werden.
In der Tabelle 2 habe ich in Zelle „I1“ einen Wert, der mir sagt in welcher Zeile jeweils eingefügt werden kann.
Kann man mit meiner Erklärung etwas anfangen?
Gruß Korl
Anzeige
AW: variable Zelle kopieren mit Makro
ransi
morgen korl
wie sieht denn der wert in „I1" aus?
ist das ein range bereich oder ein wert der in spalte a gesucht werden soll?
ransi
AW: variable Zelle kopieren mit Makro
03.10.2004 16:42:40
Korl
Guten Tag ransi,
entschuldige bitte mein spätes Erscheinen, mußte erst die Hausaufgaben im Garten erledigen ;-)
Ja, ich es wird ein Wert in Spalte "A" gesucht.
Die Formel die ich stehen habe kann ich so nicht zeigen, da dieses Forumprogramm es nicht zu lässt.
Ich versuchs mal so: Zählen wenn in Spalte "A" größer Null plus 1
Gruß Korl
Anzeige
AW: variable Zelle kopieren mit Makro
ransi
hallo korl
weiss nicht ob ich dich richtig verstsanden habe, aber versuch mal so:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zielbereich As Range
Dim zeile As Long
On Error GoTo fehler
zeile = WorksheetFunction.Match(Sheets("Tabelle2").Range("i1").Value, Sheets("Tabelle2").Range("A:A"), 0)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Tabelle2").Cells(zeile, 2)
Cancel = True
Exit Sub
fehler:
MsgBox "Wert in Tabelle2  I1  kommt in Tabelle 2 Spalte A nicht vor !"
Cancel = True
End Sub

ransi
Anzeige
AW: variable Zelle kopieren mit Makro
03.10.2004 20:04:52
Korl
Hallo ransi,
erstmal Danke für Deine Mühe. Ich erhalte Deine Fehlermeldung.
Ich habe mit Deinen ersten Code probiert und hatte mir wie folgt gedacht:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy
Cancel = True
' wechseln in Tabelle Zusammenstellung
Sheets("Zusammenstellung").Select
' einfügen
ActiveSheet.Paste
' in Zelle "B und Zelleninhalt von I1
Range("B$I1").Select  'Dies ist mein Problem
End Sub

Das Problem ist die Zielzelle, Spalte B und Zeile (z.B. 6) steht in I1
Kannst Du was damit anfangen?
Gruß Korl
Anzeige
Range("B" & [i1]).Select
ransi
hallo korl
Range("B" & [i1]).Select geht.
ist jetzt so "aus der Hand" und ungetestet, müsste aber funktionieren.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy destination:=Sheets("Zusammenstellung").Range("B" & [i1])
Cancel = True
End Sub

ransi
Anzeige
AW: Range("B" & [i1]).Select
03.10.2004 20:59:18
Korl
Hallo ransi,
mit dem neuen Code bewegt sich leider garnichts.
Mit meiner eigenen Zieldefinierung (Range("B" & [i1]).Select) blieb er dort auch hängen.
Gruß Korl
letzter versuch für heute
ransi
hallo korl
dieses funzt bei mir:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
zeile = Sheets("Zusammenstellung").Range("i1").Value
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Zusammenstellung").Cells(zeile, 2)
Cancel = True
End Sub

ransi
Anzeige
AW: Range("B" & [i1]).Select
03.10.2004 21:54:19
Korl
Hallo ransi,
ich habe nochmal mit den letzte Code probiert.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Zusammenstellung").Range("B" & [i1]).Select
Cancel = True
End Sub

Ich habe hier "Range("B" & [i1]).Select" "Select" angefügt.
Das Debuggen blieb bei dieser Zeile stehen.
Gruß Korl
Anzeige
vergiss mal das select
ransi
versuchs mal hier mit:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
zeile = Sheets("Zusammenstellung").Range("i1").Value
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Zusammenstellung").Cells(zeile, 2)
Cancel = True
End Sub

ransi
Anzeige
Klasse Ransi!
Beate
Hallo Ransi,
sehr schön, bei mir läuft dein Code. Minimaler Verkürzungsvorschlag:
If Target.Column &gt 2 Then Exit Sub
Warum setzt du
Dim zeile As Long
zeile = Sheets("Zusammenstellung").Range("i1").Value
über die If-Zeile? Damit müßte es sich doch erst beschäftigen, wenn in Spalte A oder B doppelgeklickt wird, so wird das ja bereits bei jedem Doppelclick eingelesen. Gibt es einen Grund?
Gruß,
Beate
Anzeige
AW: .. über IF zeile
ransi
hallo Beate
danke für den tip.
hast recht.
über die IF zeile macht nur langsam.
hat keinen bestimmten grund.
Hoffe du siehst es mir nach, ich mutiere grade vom anfänger zum fortgeschrittenen.
ransi
AW: vergiss mal das select
03.10.2004 22:25:12
Korl
Hi ransi,
ich mags nicht sagen, als wenn kein Code da währe. Es spring nicht an.
Mit Deinen ersten Code und mein angebastelte:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Or Target.Column = 2 Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy
Cancel = True
Sheets("Zusammenstellung").Select
ActiveSheet.Paste
End Sub

wird in die aktive Zelle eingefügt. Selbst wenn ich eine konkrete Zelle, also "Range(B5").Select" ansprechen will, bleibt das Makro dort stehen?
Für heute soll denn aber auch genug sein.
Ich wünsch Dir eine guten Nacht und hab Dank für Deine Geduld mit mir!
Gruß Korl
Anzeige
Hier ist Ransis Code in Testdatei eingebaut
Beate
Hallo Korl,
ich glaube, der Fehler ist an der Stelle in Ransis Code:
zeile = Sheets("Zusammenstellung").Range("i1").Value
Muss sein:
zeile = Sheets("Tabelle1").Range("i1").Value
Und so habe ich das Makro in die Testdatei eingebaut und es läuft:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
zeile = Sheets("Tabelle1").Range("i1").Value
If Target.Column > 2 Then Exit Sub
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Zusammenstellung").Cells(zeile, 2)
Cancel = True
End Sub

Testdatei:
https://www.herber.de/bbs/user/11619.xls
Gruß,
Beate
Anzeige
OT Formeln im Forum
PeterW
Hallo Korl,
Formeln lassen sich im Forum ohne Probleme darstellen. Schau mal hier:
https://www.herber.de/forum/whatsnew.htm
Ohne die Formel zu sehen stochert nicht nur Ransi noch länger im Nebel.
Gruß
Peter
AW: OT Formeln im Forum
Korl
Hallo Peter,
Danke für Deinen OT
Gruß Korl
Anzeige
AW: variable Zelle kopieren mit Makro
Reinhard
Hi Korl,

im Vb-Editor doppelt auf Tabelle1, dann nachfolgenden Code reinkopieren.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 And Target.Column <> 2 Then Exit Sub
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:= _
Worksheets("Tabelle2").Cells(Cells(65536, 1).End(xlUp).Row + 1, 1)
Application.SendKeys "{ESC}"
End Sub

Anstatt Application.SendKeys "{ESC}" kannst du auch Application.SendKeys "{ENTER}" nehmen, dann wird die Zelle wie bei Enter verlassen.
Gruß
Reinhard
Anzeige
AW: variable Zelle kopieren mit Makro
Hübi
Hallo Korl,
versuch doch mal diesen Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim WSQ As Worksheet, WSZ As Worksheet
Dim LetzteZeile As Long
If Target.Column <> 1 And Target.Column <> 2 Then Exit Sub
Set WSQ = Worksheets("Tabelle1")
Set WSZ = Worksheets("Tabelle2")
LetzteZeile = WSZ.Range("A65536").End(xlUp).Row + 1
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=WSZ.Cells(LetzteZeile, 1)
Application.SendKeys "{ESC}"
End Sub

Doppelklick auf die zu kopierende Zelle hängt den Inhalt im anderen Blatt an.
Gruß Hübi
Anzeige
AW: variable Zelle kopieren mit Makro
Beate
Hallo Korl,
Beispieldatei:
https://www.herber.de/bbs/user/11616.xls
Doppelklick in Tabelle2 Spalte A oder B kopiert den Wert der doppelgeklickten Zelle in Tabelle1 Spalte B in der Zeile wo Wert aus Tabelle2!I1 in Spalte A steht:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column > 2 Then Exit Sub
Dim rng As Range
Cancel = True
Application.ScreenUpdating = False
Set rng = Sheets("Tabelle1").Range("$A$1:$A$1000").Find(What:=Sheets("Tabelle2").[I1], LookIn:=xlValues, LookAt:=xlWhole)
If rng Is Nothing Then
MsgBox "Wert wurde nicht gefunden."
Else
Application.Goto rng, True
ActiveCell.Offset(0, 1).Activate
Sheets("Tabelle2").Select
Selection.Copy
Sheets("Tabelle1").Select
ActiveSheet.Paste
Sheets("Tabelle2").Select
Application.ScreenUpdating = True
MsgBox "Spalte B Tabelle1 wurde geändert."
End If
End Sub

Kein Schönheitspreis wegen der Selects, aber es läuft.
Gruß,
Beate
Anzeige
AW: variable Zelle kopieren mit Makro
04.10.2004 12:05:22
Korl
Hallo,
zunächst möchte ich mich bei all meinen Antwortern für Ihre Mühe bedanken!
Es tritt immer wieder ein Laufzeitfehler'9' auf. ( Index außerhalb des gültigen Bereichs)
Ich habe nun meine Beispielmappe angehängt um Einblick nehmen zu können. Darin befindet sich von mir Laienhafter Code, der es über Tastenkombination ermöglicht.
https://www.herber.de/bbs/user/11641.xls
Ich hoffe das man damit weiter kommen kann.
Gruß Korl
Anzeige
AW: variable Zelle kopieren mit Makro
Beate
Hallo Korl,
du hattest im Code bei zeile den Tabellenblattnamen nicht angepasst. Hier ist deine Datei korrigiert zurück:
https://www.herber.de/bbs/user/11643.xls
Gruß,
Beate
AW: variable Zelle kopieren mit Makro
04.10.2004 15:29:47
Korl
Hallo Beate,
johuu, es funktioniert. Du hast mir sehr geholfen, besten Dank dafür!
Ich glaub es war getsern schon ein bischen spät oder dunkel für mich ;-)
Gruß Korl
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelle kopieren mit Excel VBA: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um eine variable Zelle in Excel mit VBA zu kopieren, befolge diese Schritte:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Wähle das entsprechende Tabellenblatt aus:

    • Doppelklicke auf das Tabellenblatt (z.B. „Tabelle1“), in dem du den Code hinzufügen möchtest.
  3. Füge den folgenden Code ein:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       Dim zeile As Long
       zeile = Sheets("Tabelle2").Range("I1").Value
       If Target.Column <> 1 And Target.Column <> 2 Then Exit Sub
       Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy Destination:=Sheets("Tabelle2").Cells(zeile, 2)
       Cancel = True
    End Sub
  4. Schließe den VBA-Editor:

    • Drücke ALT + Q, um zum Excel-Fenster zurückzukehren.
  5. Teste den Code:

    • Doppelklicke auf eine Zelle in Spalte A oder B. Der Inhalt sollte in Tabelle2 in der angegebenen Zeile eingefügt werden.

Häufige Fehler und Lösungen

  • Laufzeitfehler '9': Dieser Fehler tritt auf, wenn der Tabellenblattname nicht korrekt angegeben ist. Stelle sicher, dass du die richtigen Namen verwendest (z.B. „Tabelle1“ und „Tabelle2“).

  • Index außerhalb des gültigen Bereichs: Überprüfe, ob die Zelle, auf die du zugreifen möchtest, tatsächlich existiert. Möglicherweise ist der Wert in Zelle I1 ungültig.

  • Code wird nicht ausgeführt: Stelle sicher, dass der Code im richtigen Modul für das Tabellenblatt eingefügt wurde.


Alternative Methoden

Eine alternative Methode, um Zellen zu kopieren, ist die Verwendung von Tastenkombinationen oder manuelles Kopieren:

  • Kopiere mit STRG + C: Wähle die Zellen aus und kopiere sie manuell.
  • Füge sie mit STRG + V ein: Gehe zu dem Zielort und füge die Zellen ein.

Praktische Beispiele

Hier ist ein einfaches Beispiel für das Kopieren von Zellen in eine andere Tabelle:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 1 Or Target.Column = 2 Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Copy _
        Destination:=Sheets("Zusammenstellung").Cells(Cells(65536, 1).End(xlUp).Row + 1, 1)
        Cancel = True
    End If
End Sub

In diesem Beispiel wird der Inhalt von Spalte A und B in die nächste freie Zeile von „Zusammenstellung“ kopiert.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False zu Beginn des Codes, um die Leistung zu verbessern, insbesondere bei größeren Datenmengen.
  • Nutze Option Explicit am Anfang Deines VBA-Moduls, um sicherzustellen, dass alle Variablen deklariert sind, was zu weniger Fehlern führt.
  • Vermeide Select und Activate: Direkte Referenzen sind schneller und effizienter.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Code funktioniert? Stelle sicher, dass du alle Tabellennamen korrekt eingegeben hast und dass die Zellen, auf die du zugreifen möchtest, existieren.

2. Was kann ich tun, wenn ich einen Laufzeitfehler erhalte? Überprüfe die genaue Zeile, in der der Fehler auftritt, und stelle sicher, dass alle Bezüge zu Zellen oder Bereichen gültig sind.

3. Kann ich den Code anpassen, um andere Spalten zu kopieren? Ja, du kannst die Spaltennummern in den If-Bedingungen ändern, um andere Spalten einzubeziehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige