Clever-Excel-Forum

Normale Version: VBA: Klick auf leere Zelle soll Zahlenwert aus einer anderen Zelle übernehmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich bräuchte eure geschätzte Hilfe für die Tabelle "Beschluss":

Durch einfachen Klick oder Doppelklick in eine der drei Leerzellen "Zustimmung", "Ablehnung" oder "Enthaltung" (E12:G12) sollte der ganzzahlige Zahlenwert der Zelle "Eigentümeranteil" (D12) z. B. 61 automatisch in die betreffende Leerzelle eingefügt werden.
Dies sollte immer zeilenweise erfolgen für aktuell insg. 8 Zeilen, d.h. D12 bis D19 in der Tabelle "Beschluss".

Eine eingebaute Rücksetzfunktion wäre natürlich noch super.

Herzliche Grüße
Frank
Hallo Frank,

in das schon vorhandene VBA-Modul des Tabellenblattes "Beschluss" (Rechtsklick auf den Tabellenreiter > Code anzeigen) kommt folgender Code:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim lngTemp As Long
  If Not Application.Intersect(Target, Range("E12:G19")) Is Nothing Then
    Cancel = True
    lngTemp = Application.Max(Cells(Target.Row, 4).Resize(, 4))
    If Target = "" Then
      Cells(Target.Row, 4).Resize(, 4) = ""
      Target.Value = lngTemp
    Else
      Cells(Target.Row, 4).Resize(, 4) = ""
      Cells(Target.Row, 4).Value = lngTemp
    End If
  End If
End Sub

Gruß Uwe
Hallo Herr Kuwer,

erstmal ganz ganz lieben Dank für die schnelle und professionelle Hilfe. 
Super, funktioniert alles tadellos, auch die Rücksetzfunktion. 

Wäre es vielleicht möglich, daß der Zahlenwert z.B. 61 von der Quelle, d.h. der Zelle "Anwesend" (D12) nach dem Kopieren erhalten bleibt? 
Momentan wird er nämlich physisch verschoben zur jeweilig angeklickten Zielzelle "Zustimmung/Ablehnung/Enthaltung".
Ist-Zustand nach Klick: D12: leer und E12: 61
Soll-Zustand nach Klick: D12: 61 und E12: 61

Herzliche Grüße
Frank
Hallo Frank,

dann so:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Application.Intersect(Target, Range("E12:G19")) Is Nothing Then
    Cancel = True
    If Target = "" Then
      Cells(Target.Row, 5).Resize(, 3) = ""
      Target.Value = Cells(Target.Row, 4).Value
    Else
      Target = ""
    End If
  End If
End Sub

Gruß Uwe
Hallo Uwe,

super, jetzt funktioniert alles Bestens! 
Du machst echt einen sehr guten Job!  18
Nochmals ganz lieben Dank und vergelt's Gott reichlich!

Kannst du mir vielleicht ein Buch empfehlen, damit ich mich ein bisschen Einlesen kann in diese Art der Vercodung in Excel?
Ich hab nämlich keine Ahnung davon, kannte bisher nur die Formeln.
Ist das übrigens VBA?

Herzliche Grüße
& ein wunderschönes Wochenende

Frank  19
Hallo Frank,

dankeschön und ja, es ist VBA.

Für den VBA-Einstieg scheint mir z.B. dieses Buch recht brauchbar.

Gruß Uwe