Clever-Excel-Forum

Normale Version: Wert durch Doppelklick in anderes Tabellenblatt übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
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
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:
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
Guten Morgen.

Vielen lieben Dank an Euch beide. Klappt alles wunderbar und so wie es soll.
Nochmals Danke! Heart
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:
(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
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