So, habe mich mal damit beschäftigt und ...
13.10.2016 01:46:39
Luc:-?
…mich anstelle eines Buttons für einen Rechtsklick auf B4, den Titel der NeuBewertung entschieden, Sven;
außerdem habe ich diese Tabelle (in Änderung) auf 4 Spalten verkürzt, denn die Hilfsspalten benötigst du ja nicht wirklich. Aber deren GrundIdee war nicht verkehrt, weshalb ich die in Fmln für die verbliebenen Spalten C (aktBewertung) und D (DB-Zeile) eingearbeitet habe:
C5[:C8]:{=ERSETZEN(SVERWEIS(B$2&[@Tätigkeit];Tabelle15[Lieferanten]&Tabelle15[[Tätigkeit]:[Bewertung]];2;0);1;LÄNGE(B$2);"")}
D5[:D8]:{=VERGLEICH(B$2&[@Tätigkeit];Tabelle15[Lieferanten]&Tabelle15[Tätigkeit];0)+1}
Im Dokument-Klassenmodul dieses Blattes (steht für die Ereignisse desselben) muss dann nur noch nachfolgende EreignisProzedur angelegt wdn:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Const relDBfeld As Long = 3, lzETabZeile As Long = 8, relDBZeileSp As Long = 4, _
adEintragDB$ = "B4", naBlattDB$ = "Datenbank" 'ggf anpassen!
Dim relETabBer As Range, xZeile As Range
On Error GoTo fx
Cancel = Not Intersect(Target, Me.Range(adEintragDB)) Is Nothing
If Cancel Then
Set relETabBer = Me.Range(Me.Cells(Target.Row + 1, Target.Column), _
Me.Cells(lzETabZeile, relDBZeileSp))
For Each xZeile In relETabBer.Rows
If Not IsEmpty(xZeile.Cells(1)) Then
Sheets(naBlattDB).Cells(xZeile.Cells(relDBZeileSp - 1), _
relDBfeld) = xZeile.Cells(1)
xZeile.Cells(1) = Empty
End If
Next xZeile
fx: If CBool(Err.Number) Then
MsgBox Err.Description, vbCritical, "Fehler-Abbruch"
Set xZeile = Nothing
End If
Set relETabBer = Nothing
End If
End Sub
Außerdem sollte die GültigkeitsRegel in Spalte B von Änderung Leerzellen zulassen, denn die NeuBewertungen wdn bei Übernahme in die DB gelöscht.
Bei dieser Organisation kann der Vorgang mehrfach wiederholt wdn (falls man sich mal geirrt hat, was dann in der NachbarSpalte sofort zu sehen ist).
Um das einigermaßen zufriedenstellend testen zu können, hatte ich die DB übrigens um einen weiteren Lieferanten erweitert.
Gutes Gelingen! Luc :-?