1.5k Aufrufe
Gefragt in Tabellenkalkulation von rolwilwal Einsteiger_in (29 Punkte)
Hallo zusammen,

meine bescheidene Excelkenntnisse verhindern das folgende Problem zu lösen :-)

Vielleicht gelingt es ja mit eurer Hilfe.

Bei einfachen Linksklick in eine Zelle B3:B138 soll deren Wert in Zelle P1 kopiert werden und bei einfachen Linksklick in eine Zelle D3:D138 (z.B. D5) soll der Wert aus der gleichen Zeile aus Spalte B (in dem Beispiel B5 nach P1 kopiert werden.

Ist so etwas machbar? Vielen Dank für eure Mühe im Voraus.

Gruß Willi

11 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Willi,

das folgende Makro kopiert dir die Werte wie gewünscht in P1, allerdings mit Doppelklick.

Das Makro muss in das VBA-Projekt der betreffenden Tabelle kopiert werden:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("B3:B138")) Is Nothing Then

        Cancel = True       'Doppelklick wird beendet, d.h. es wird nicht die Zelle aktiviert
        Range("P1") = Target.Value      'Daten werden nach P1 kopiert
        
 End If

If Not Intersect(Target, Range("D3:D138")) Is Nothing Then

        Cancel = True
        Range("P1") = Cells(Target.Row, 2).Value    'Daten aus Spalte B der betreffenden Zeile werden nach P1 kopiert
        
        
 End If

End Sub

Von Haus aus werden nur Doppelklick und Klick auf rechte Maustaste angeboten. Auf der linken Maustaste liegt ja schon das Bearbeitenmenü.

Gruß

M.O.

0 Punkte
Beantwortet von rolwilwal Einsteiger_in (29 Punkte)
Hallo M.O.,

Danke für die schnelle und toll funktionierende Lösung

Gruß Roland
0 Punkte
Beantwortet von
Hallo,

ich habe ein ähnliches Problem und versuche nun schon seit Tagen diesen und einige andere Codes für mich anzupassen. Leider fehlt mir das nötige Hintergrundwissen (Syntax?) und ich wäre äusserst dankbar wenn ihr mir auf die Sprünge helfen könntet.

Wenn ich auf Zelle S9 bis S109 doppelklicke, sollen Werte aus den Zellen R9 bis R109 nach N9, und Werte aus Q9 bis Q109 nach M9 kopiert werden. Wenn auch noch die Zelle S9 bis S109, mit der ich den jeweiligen Kopiervorgang starten möchte nach 09 kopiert wird, wäre das traumhaft.

Ich hoffe mir kann jemand helfen.

Gruss, Jost
0 Punkte
Beantwortet von
Hallo nochmal,

es sollen immer nur einzelne Werte aus der jeweiligen Zeile kopiert werden, nich die ganze Spalte. Genau da hakt es bei mir zur Zeit...

Ich hoffe ich konnte mein Vorhaben verständlich genug fomulieren.

Gruss, Jost
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jost,

wenn ich dich richtig verstanden habe, dann so:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("S9:S109")) Is Nothing Then
        Cancel = True
        Target.Offset(0, -1).Copy Target.Offset(0, -5)
        Target.Offset(0, -2).Copy Target.Offset(0, -6)
        Target.Copy Target.Offset(0, -4)
    End If
End Sub

Bis später, Karin

0 Punkte
Beantwortet von
Hallo Karin,

erstmal vielen Dank für den super schnellen Versuch mir zu helfen. Leider ist das noch nicht ganz das was ich mir vorstelle. Bei deinem Code wird immer jeweils eine Zeile hinzugefügt. Bei meiner Tabelle müssen jedoch Werte aus dem Zeilenbereich 9 bis 109 immer wieder in die selben Zellen und die alten ersetzen.

Um den konkreten Anwendungsfall nochmal zu beschreiben,

ich habe Werte in Q9 bis Q109 und R9 bis R109 die zusammen gehören und die einer laufenden Nr. 0 bis 100, also von S9 bis S109 zugeordnet sind .Wenn ich die erste laufende Nr. anklicke sollen die Werte aus der Zeile, in eine Druckvorlage zu M9 und N9 kopiert werden. Als Kontrolle wird die laufende Nr. mit nach O9 kopiert. Dann wird gedruckt. Als nächstes klicke ich die zweite laufende Nr. an und die Werte in M9 N9 und O9 werden entsprechend ersetzt.

Zur Zeit wird hier alles per Hand kopiert und eingefügt was meiner Meinung nach mega anstrengend werden kann und dementsprechen fehleranfällig ist...

Die Befehle mit dem Offset sehe ich bei meiner Suche und rumprobiererei das erste mal. Reicht es evtl. einfach diese Offsetwerte zu ändern?

Danke schonmal im Vorraus!

Gruss, Jost
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jost,

da muss ich dir heftig widersprechen, denn bei meinem Code wird definitiv keine Zeile hinzugefügt sondern die Daten aus derjenigen Zeile, in welcher der Doppelklick erfolgt, nur in die jeweils gewünschte andere Spalte kopiert - so wie du es wolltest. Das kannst du schon am Offset-Befehl erkennen, denn er bedeutet folgendes: Offset(Zeilenversatz, Spaltenversatz). Mit anderen Worten bedeutet Zeilenversatz 0 konkret: verbleibe in derselben Zeile!!

Bis später, Karin

0 Punkte
Beantwortet von
Hallo Karin,

genau so ist es und ich entschuldige mich wenn meine Antwort als Kritik verstanden wurde.

Prinziepiell funktioniert das schon super und ich habe auch schon versucht diese Offset Werte entsprechend anzupassen, jedoch gerät dann alles total durcheinander. Die Werte aus den Spalten Q und R müssten immer die gleichen Zellen M9 und N9, da sie nur dann auf der Durchvorlage landen. Ich bin für jede Hilfe dankbar.

Ich wünsche noch einen schönen Abend.

Gruss, Jost
0 Punkte
Beantwortet von
Mahlzeit,

hier mal eine Kreation die ich mir bis jetzt zusammengebastelt habe, vielleicht ist damit verständlicher woraus ich hinaus möchte:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("S9:S109")) Is Nothing Then
        Cancel = True
        Range("O9") = Target.Value
 End If
 
If Not Intersect(Target, Range("R9:R109")) Is Nothing Then
        Cancel = True
        Range("N9") = Target.Value
 End If
 
If Not Intersect(Target, Range("Q9:Q109")) Is Nothing Then
        Cancel = True
        Range("M9") = Target.Value
 End If
 
End Sub

Hierbei muss ich jede Zelle einzeln anklicken um in die gewünschte Zelle zu kopieren, das ist jetzt so die Holzhammermethode und wäre natürlich viel eleganter wenn ich nur aus S9 bis S109 auswählen könnte.

Wie geschrieben, bin ich für jede Hilfe dankbar.

Gruss, Jost
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jost,

also sollen die Daten in definierte Zellen und nicht innerhalb der Zeile in andere Spalten kopiert werden? Dann so:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("S9:S109")) Is Nothing Then
        Cancel = True
        Target.Offset(0, -1).Copy Range("M9")
        Target.Offset(0, -2).Copy Range("N9")
        Target.Copy Range("O9")
    End If
End Sub


Bis später, Karin

...