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.

Wert durch Doppelklick in anderes Tabellenblatt übertragen
#1
Hallo!

Ich habe zwei Tabellenblätter. Im ersten befindet sich eine ellenlange Liste mit Artikeln und im zweiten ein von mir geschriebener Rechner.
Ich habe beide Tabellenblätter nebeneinander angeordnet und möchte nun, dass wenn ich im ersten Tabellenblatt auf einen Artikel doppelklicke, dieser in den Rechner im zweiten Tabellenblatt übertragen wird.

Mit folgendem VBA Code klappt das an sich ganz gut, jedoch fügt er die Werte nur auf dem selbigen Tabellenblatt ein und ich weiss nicht, was ich schreiben muss, damit er die Werte in das zweite überträgt:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row > 7 Then
        If Target.Column = 1 Then
            If Not IsEmpty(Target.Value) Then _
                Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
            Cancel = True
        End If
    End If
End Sub


Ich hoffe mir kann geholfen werde und freue mich auf Antworten!

Mit freundlichen Grüßen
Antworten Top
#2
Hallo!
Zitat:Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value

... schreibt Dir etwas in die erste freie Zeile der Spalte E = 5 im aktiven Blatt!
Du musst korrekt referenzieren:
Code:
With Tabelle2
     .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
End With

Den CodeName der Tabelle2 musst Du anpassen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hallo Ralf

Wenn ich den von dir angegebenen Code einfüge bekomme ich die Fehlermeldung "End-if ohne If-Block".

Sieht nun wie folgt aus:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Row > 7 Then
       If Target.Column = 1 Then
           If Not IsEmpty(Target.Value) Then _
               With Tabelle2
    .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
End With
           Cancel = True
       End If
   End If
Antworten Top
#4
Hallo,
Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Row > 7 Then
      If Target.Column = 1 Then
          If Not IsEmpty(Target.Value) Then _
              With Tabelle2
                  .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
              End With
          End If
          Cancel = True
  End If
End Sub

... so läuft Dein Code durch.

Bei dem von Dir oben geposteten Code erwartet Dich aber schon beim ersten Durchlauf die nächste Überraschung. 
Er wird abschmieren, weil das End Sub fehlt  :19:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • Job90
Antworten Top
#5
Hallo Peter!
Der Zeilenumbruch in der IsEmpty-Zeile muss weg und ein zusätzliches End If dazu:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row > 7 Then
     If Target.Column = 1 Then
         If Not IsEmpty(Target.Value) Then
             With Tabelle2
                 .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
             End With
         End If
         Cancel = True
     End If
 End If
End Sub


Es ginge auch ein Einzeiler ohne With-Klammer, dann wird es m.E. aber unübersichtlich:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row > 7 Then
     If Target.Column = 1 Then
         If Not IsEmpty(Target.Value) Then _
                 Tabelle2.Cells(Tabelle2.Cells(Tabelle2.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
         Cancel = True
     End If
 End If
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Job90
Antworten Top
#6
Guten Morgen.

Vielen lieben Dank an Euch beide. Klappt alles wunderbar und so wie es soll.
Nochmals Danke! Heart
Antworten Top
#7
Hallo Ralf,

ja, Du hast recht, aber ich wollte den Code möglichst wenig verändern. Der Zeilenumbruch ist von mir dabei
allerdings wirklich unbeachtet geblieben. Ich kann da nur die Schuld auf die späte / frühe Stunde schieben.  :05:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#8
(14.08.2015, 06:51)RPP63 schrieb: Es ginge auch ein Einzeiler ohne With-Klammer, dann wird es m.E. aber unübersichtlich:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row > 7 Then
     If Target.Column = 1 Then
         If Not IsEmpty(Target.Value) Then _
                 Tabelle2.Cells(Tabelle2.Cells(Tabelle2.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Target.Value
         Cancel = True
     End If
 End If
End Sub

Hallo Ralf,

als Einzeiler dann vielleicht so:

Code:
Tabelle2.Cells(Rows.Count, 5).End(xlUp).Offset(1).Value = Target.Value

Gruß Uwe
Antworten Top
#9
Hi Uwe!
Logisch! Idea
War wohl auch bei mir ein wenig zu früh?
Da habe ich wohl auch zu sehr auf dem Ausgangscode aufgesetzt, ohne mir weitere Gedanken zu machen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


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