Doppelklick überträgt einen Wert
#1
Ich möchte den Wert aus dem Blatt "Monat" nehmen und als Wert in das Blatt Überstunden eintragen.
Aber nur der Wert, sonst wird ja die ganze Formatierung mitgenommen.

Ich mache einen Doppelklick in der Zelle, bekomme meine Sicherheitsfrage und nach JA
steht hier der Wert drin.
So wie ich es unten gebastelt habe, geht es nicht.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Set temp = Intersect(Range("Monatsbereich"), Target)
If Not temp Is Nothing Then
  Cancel = True
   meldung = MsgBox("Soll der Wert aus der Tabelle Monat" & vbNewLine & _
             "in die Tabelle Jahresübersicht kopiert werden?" & vbNewLine & _
             "" & vbNewLine & _
             "Wert kopieren", vbYesNo, "__")
   If meldung = vbNo Then
      Exit Sub
   End If

Rem Einfügen des Wert
   Worksheets("Monat").Range("M36").Copy
   Worksheets("Überstunden").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
End If
End Sub

Was muss ich ändern?
Kann mir jemand auf die Sprünge helfen?
Top
#2
Hallo Achim,

es gibt nur eine ActiveCell. Deshalb vielleicht so:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.ScreenUpdating = False
Target.Copy
Worksheets("Überstunden").Activate
ActiveCell.Value = Target.Value
Me.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Gruß Uwe
Top
#3
Hallo Uwe,

ich habe den Code entsprechend angepasst.
Funktioniert einwandfrei.
Vielen Dank für deinen Hilfe dazu.

Allerdings habe ich deinen Hinweis mit "Es gibt nur eine ActiveCell" nicht ganz verstanden.
Grundsätzlich klar, es kann nur EINE Zelle die aktiv sein.
Aber was war denn an meinem Eingangscode falsch in Bezug auf deinem Hinweis?
Top
#4
Hallo Achim,

(21.10.2017, 22:02)maine-coon schrieb: Allerdings habe ich deinen Hinweis mit "Es gibt nur eine ActiveCell" nicht ganz verstanden.
Grundsätzlich klar, es kann nur EINE Zelle die aktiv sein.
Aber was war denn an meinem Eingangscode falsch in Bezug auf deinem Hinweis?

die Selection eines inaktiven Blattes, welche die aktive Zelle ist oder enthält, wenn dieses Blatt aktiviert werden würde, kann man nicht ermitteln.

Gruß Uwe
Top
#5
Hallo Uwe,
danke für die Aufklärung.
Ich habe den ganzen Code jetzt noch etwas verändert. Läuft richtig gut.
Alles super jetzt.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Zellbereich As Range
Set Zellbereich = Intersect(Range("Monatsbereich"), Target)
If Not Zellbereich Is Nothing Then
   Cancel = True
   Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbYellow
   meldung = MsgBox("Soll der Wert aus der Tabelle Monat" & vbNewLine & _
             "in die Tabelle Jahresübersicht kopiert werden?" & vbNewLine & _
             "" & vbNewLine & _
             "Wert kopieren", vbYesNo, "__")
      If meldung = vbNo Then
          Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbWhite
          Exit Sub
      End If

Rem Einfügen des Wert
      Cancel = True
      Application.ScreenUpdating = False
      Worksheets("Monat").Range("M36").Copy
      Worksheets("Überstunden").Activate
      ActiveCell.Value = Worksheets("Monat").Range("M36")
      Me.Activate
      Application.CutCopyMode = False
      Application.ScreenUpdating = True
      Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbWhite
  End If
End Sub
Wünsche dir einen schönen Sonntag.
Gruß Achim
Top
#6
Hallo Achim,

diese Codezeile

Code:
Worksheets("Monat").Range("M36").Copy

braucht es nicht mehr und auch das zweite Cancel = True ist nicht mehr nötig.
Gruß Stefan
Win 10 / Office 2016
Top
#7
Habe die beiden Zeilen rausgenommen.
Danke für den Hinweis.
Gruß Achim
Top
#8
Hallo Achim,

(22.10.2017, 13:07)maine-coon schrieb: Habe die beiden Zeilen rausgenommen.

und diese Zeile ist so gewollt!?
ActiveCell.Value = Worksheets("Monat").Range("M36")
Gruß Uwe
Top
#9
Ja, so funktioniert es gut...
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Zellbereich As Range
Set Zellbereich = Intersect(Range("Monatsbereich"), Target)
If Not Zellbereich Is Nothing Then
    Cancel = True
    Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbYellow
    meldung = MsgBox("Soll der Wert aus der Tabelle Monat" & vbNewLine & _
              "in die Tabelle Jahresübersicht kopiert werden?" & vbNewLine & _
              "" & vbNewLine & _
              "Wert kopieren", vbYesNo, "__")
       If meldung = vbNo Then
           Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbWhite
           Exit Sub
       End If

Rem Einfügen des Wert
       'Cancel = True
       Application.ScreenUpdating = False
       'Worksheets("Monat").Range("M36").Copy
       Worksheets("Überstunden").Activate
       ActiveCell.Value = Worksheets("Monat").Range("M36")
       Me.Activate
       Application.CutCopyMode = False
       Application.ScreenUpdating = True
       Application.Intersect(Target.EntireRow, Zellbereich).Interior.Color = vbWhite
   End If
End Sub
Top
#10
(22.10.2017, 14:13)maine-coon schrieb: Ja, so funktioniert es gut...

wenn es egal sein soll, welche Zelle man doppelklickt, ist es ja gut.

Gruß Uwe
Top


Gehe zu:


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