AW: VBA Zellwert löschen bzw. rückgängig
14.06.2017 06:23:25
fcs
Hallo Boris,
mit einem Ereignismakro,das Eingaben in Zellen überwacht kann man dies bewerkstelligen.
LG
Franz
'Ereignismakro - Im VBA-Editor im Code-Modul des Tabellenblatts einfügen
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range
Dim SpaMerker As Long, SpaZahl As Long
Dim StatusCalc As Long
Dim Zeile As Long
SpaMerker = 12 'Spalte L - Spalte in der Werte aus Werte-Spalte gemerkt werden, ggf. _
anpassen
SpaZahl = 4 'Spalte D - Spalte mit zu stornierenden Werten, ggf. anpassen
Select Case Target.Column
Case SpaZahl
'Eingabewert in die Merk-Spalte übertragen
If Target.Row >= 3 Then
'Makrobremsen lösen
With Application
.EnableEvents = False
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
For Each rngZelle In Target.Columns(1).Cells
Zeile = rngZelle.Row
Me.Cells(Zeile, SpaMerker).Value = Me.Cells(Zeile, SpaZahl).Value
Next
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End If
Case 11 'Spalte K - Spalte in der storniert wird
'Wert aus Wert-Spalte in Merkspalte übertragen und Inhalt in Zelle der Wert-Spalte _
löschen
If Target.Row >= 3 Then
'Makrobremsen lösen
With Application
.EnableEvents = False
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
For Each rngZelle In Target.Columns(1).Cells
Zeile = rngZelle.Row
Select Case rngZelle.Value
Case ""
Me.Cells(Zeile, SpaZahl).Value = Me.Cells(Zeile, SpaMerker).Value
Case "storniert"
Me.Cells(Zeile, SpaMerker).Value = Me.Cells(Zeile, SpaZahl).Value
Me.Cells(Zeile, SpaZahl).ClearContents
Case Else
'do nothing
End Select
Next
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End If
Case Else
'do nothing
End Select
End Sub