406 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen, ich möchte folgendes umsetzen, wenn es dann möglich ist. Ich habe zwei Registerblätter. In der einen ist die Einkaufsliste von A bis E und in der anderen Einkaufsliste2 ein leeres Blatt ebenfalls von A bis E. Nun mein Wunsch, Ich möchte in der Einkaufsliste eine Zeile anklicken, die in der Einkaufsliste2 an erster Stelle eingefügt wird. Die nächste an zweiter Stelle usw. Beispiel: Ich klicke in der Einkaufsliste auf A10 dann muß die Zeile in Einkaufsliste2 in A2 landen. Klicke ich auf A20 dann muß die Zeile in Einkaufsliste2 in A3 landen usw. Da ich bei VBA nicht so bewandert bin, wäre ich dankbar, wenn Ihr mir sagt wie ich das umsetzen soll.

Habt vielen Dank im vorraus

Gruß Frenzi

7 Antworten

0 Punkte
Beantwortet von
Hallo Frenzi,

möglich wäre das schon, auch relativ simpel umzusetzen. Aber wie
stellst du dir das tägliche Handling genau vor? Ich sehe hier 3
Möglichkeiten, die aber alle nicht wirklich Optimal sind:

1. Man könnte einen ToggleButton einfügen. Wenn du da drauf
klickst bleibt der im aktiven Status und du weißt, dass ab sofort
ohne weitere Nachrage jede Zeile, in die du klickst in das andere
Tabellenblatt kopiert wird. Deaktivierst du diesen Button wieder,
kannst du ganz normal in eine Zelle klicken und Eingaben tätigen
um das Kassenbuch fortzuführen, ohne dass 5 mal die gleiche
Zeile mit Teileingaben kopiert wird.
Nachteil dieser Variante: Du müsstest die Reihenfolge in der
du die diversen Zeilen anklickst, im Vorfeld genau kennen und darfst
dich zwischendurch nicht verklicken.

2. Du Klickst in eine Zeile und Excel fragt dich, ob du die markierte
Zeile übertragen willst oder nicht. Wenn du Nein wählst, kannst du
deine Eingabe machen.
Nachteil dieser Variante: Die ständigen Fragen nach jeder
Anwahl einer Zelle sind extrem nervig.

Bei beiden Varianten wird nicht zwischen Anwahl einer Zelle mit den
Cursortasten oder durch Mausklick unterschieden. Deshalb:

3. Die Kopieraktion wird erst ausgeführt, wenn du wirklich eine Zelle
mit der Maus anklickst. Bei Bewegung mit den Pfeiltasten
passiert nichts.
Nachteil dieser Variante: Zum normalen Weiterführen des
Kassenbuchs darfst du dich dann ausschließlich mit den
Cursortasten zwischen den Zellen bewegen. Ob du da immer dran
denkst? Meistens klickt man intuitiv doch irgendwohin um schnell in
eine Zelle zu kommen.

Wie du siehst haben alle 3 Varianten Nachteile. Außerdem ist
dabei noch nicht berücksichtigt, dass bei versehentlichem Anklicken
einer bereits kopierten Zeile, diese nochmals kopiert wird. Um das
zu verhindern, müsstest du in deinem Kassenbuch eine eindeutige
ID führen, die die zu kopierende Zeile von allen Anderen
unterscheidet. Solltest du diese ID nicht haben, könnte z.B. die
Zeilennummer dafür genutzt werden. Diese müsste dann aber
ebenfalls nach Kassenbuch2 (z.B. in Spalte F) kopiert werden.

Erklär doch dazu bitte mal den Aufbau deiner Datei.
Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo Community .-)

Ein Beispiel!

Gruß Nighty

Auf Doppelclick!

Einzufügen
Alt+F11/Projectexplorer/Deine Tabelle

Tabelle2 wird beschrieben

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target.Row > 1 And Target.Column < 6 Then
Dim Qarr As Variant
Qarr = Range("A" & Target.Row & ":E" & Target.Row)
Worksheets(2).Range("A" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 & ":E" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1) = Qarr
End If
Application.EnableEvents = True
End Sub
0 Punkte
Beantwortet von
Achso, noch eine Frage hierzu. Deine Beschreibung widerspricht sich.
an erster Stelle eingefügt wird. Die nächste an zweiter Stelle
usw. Beispiel: Ich klicke in der Einkaufsliste auf A10 dann muß die
Zeile in Einkaufsliste2 in A2 landen. Klicke ich auf A20 dann muß die
Zeile in Einkaufsliste2 in A3 landen usw.

Soll die kopierte Zelle in Einkaufsliste2 nun immer an erster Stelle,
also vor allen bereits kopierten Zeilen in Zeile 2 eingefügt werden, oder
sollen die kopierten Zeilen in der Reihenfolge nacheinander stehen, in
der sie kopiert werden?
0 Punkte
Beantwortet von
Hallo Community

ops ... zur besseren Übersicht!


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target.Row > 1 And Target.Column < 6 Then
Dim Qarr As Variant
Qarr = Range("A" & Target.Row & ":E" & Target.Row)
Worksheets(2).Range("A" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 & ":E" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1) = Qarr
End If
Application.EnableEvents = True
End Sub


Gruss Nighty
0 Punkte
Beantwortet von
Da war Nighty inzwischen schneller. An das Doubleklick-Ereignis hatte
ich gar nicht gedacht. Das ist natürlich auch eine Möglichkeit, die alle
oben genannten Nachteile irrelevant werden lässt.

Gute Idee Nighty! :-)
0 Punkte
Beantwortet von
Hallo Community

Antwort 3 von xlKing:

die kopierten Zeilen müssen in der Reihenfolge nacheinander stehen, in
der sie kopiert werden.


Zu Nighty's Code:

Ich habe den Code in das Tabellenblatt Einkaufsliste kopiert.
Jetzt muß ich nur noch wissen, wie ich mit Doppelclick den Code auslöse.

Gruß Frenzy
0 Punkte
Beantwortet von
Hallo Frenzy .-)

Ich dacht mit Doppelclik wäre besser!

Gruß Nighty

Es geht auch mit einem Click!

z.b.

Einzufügen
Alt+F11/Projectexplorer/Deine Tabelle

Tabelle2 wird beschrieben


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row > 1 And Target.Column < 6 Then
Dim Qarr As Variant
Qarr = Range("A" & Target.Row & ":E" & Target.Row)
Worksheets(2).Range("A" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 & ":E" & Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1) = Qarr
End If
Application.EnableEvents = True
End Sub
...