Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zellwert löschen bzw. rückgängig

VBA Zellwert löschen bzw. rückgängig
13.06.2017 23:10:37
Boris
Hallo zusammen,
ich weiß gar nicht, ob mein Anliegen überhaupt umsetzbar ist; ich beschreibe es einfach mal.
In Zelle D3 wird ein Wert (eine Zahl) eingetragen. Nun soll der Wert in genau dieser Zelle gelöscht werden, wenn in Zelle K3 = "storniert" steht.
Soweit noch alles ok.
Nun möchte ich aber, falls man fehlerhaft "storniert" eingegeben hat, dass in der Zelle D3 wieder der ursprüngliche Wert eingetragen wird, sobald man "storniert" in K3 wieder löscht.
Kann man den Wert aus D3 per VBA irgendwie in einer anderen Zelle zwischenspeichern und für's wiederherstellen nutzen?
Wenn das geht, dann soll es auch noch für D3 bis D1007 gelten in Abhängigkeit zu K3 bis K1007.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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

Anzeige
AW: VBA Zellwert löschen bzw. rückgängig
14.06.2017 22:43:08
Boris
Hallo Franz,
erst einmal vielen Dank für die Mühe und die rasche Antwort.
Leider klappt es irgendwie nicht.
Ich habe deinen Code so übernommen. Ich habe nur SpaMerker auf 14 gesetzt, da in Spalte L bereits Daten vorhanden sind.
Dann habe ich deinen Code ins Tabellenblatt 2 kopiert, wo die Berechnungen auch stattfinden.
Vielleicht mache ich hier etwas falsch. Ich habe ab "Option Explicit" alles kopiert und ins Code-Modul kopiert.
Frage: In deinem Code schreibst du an zwei Stellen Target.Columns(1).Cells. In Spalte 1 habe ich aber nichts stehen.
Habe es an den entsprechenden Stellen auch mal mit Target.Columns(4).Cells (Spalte D) versucht.
Geht auch nicht.
Anzeige
AW: VBA Zellwert löschen bzw. rückgängig
14.06.2017 22:55:05
Boris
Hallo noch einmal,
das Problem muss irgendwo in meiner Datei liegen.
Habe deinen Code in einer neuen Blanko-Excel Datei getestet und da klappt alles wie gewünscht.
Ich schau mal, ob ich den Fehler finde.
AW: VBA Zellwert löschen bzw. rückgängig
14.06.2017 23:07:39
Boris
Hallo Franz,
wende mich erneut an dich mit der Hoffnung auf Hilfe.
Ich habe in meiner Datei von Spalte C bis Spalte K den Autofilter aktiv.
Sobald ich eine Filter gesetzt habe, funktioniert deine Formel leider nicht mehr.
Ich hoffe du hast noch eine Idee ;-)
Gruß
Boris
AW: VBA Zellwert löschen bzw. rückgängig
15.06.2017 00:18:09
fcs
Hallo Boris,
mit den folgenden Anpasungen funktioniert es auch mit gesetztem Autofilter.
Du musst den Bereich des Autofilers bis zur Spalte mit den gemerkten Werten erweitern. Sonst gibt es Probleme, wenn du Daten im Autofilter-Bereich sortierst.
Gruß
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 = 14 'Spalte N - 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.Cells
If rngZelle.Column = 11 Then
Zeile = rngZelle.Row
Me.Cells(Zeile, SpaMerker).Value = Me.Cells(Zeile, SpaZahl).Value
End If
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.Cells
If rngZelle.Column = 11 Then
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
End If
Next
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End If
Case Else
'do nothing
End Select
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige