Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Löschen nur wenn ...

Betrifft: Löschen nur wenn ... von: walter
Geschrieben am: 11.11.2012 11:15:10

Guten Morgen,
ich möchte gern die letzte Eingabe löschen aber nur wenn
das Datum Heute aktuell ist.
Also in N10 steht ein Name und in L10 das Datum.
Wenn als das Datum kleiner ist soll Hinweis kommen "Sie können den
Eintrag vom (vielleicht das Datum anzeigen) nicht löschen.
Es sollte also immer gelöscht werden, da wo man die Zelle ausgewählt
hat. und dann natürlich die beiden Zellen LINKS daneben.
mfg walter

  

Betrifft: AW: Löschen nur wenn ... von: Hajo_Zi
Geschrieben am: 11.11.2012 11:22:38

Hallo Walter,

ich halte mich mal an den letzten Satz, der nicht zum Rest passt.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 14 And Target = "" Then
        Application.EnableEvents = False
        Range(Target.Offset(0, -1), Target.Offset(0, -2)) = ""
        Application.EnableEvents = False
    End If
End Sub
GrußformelHomepage


  

Betrifft: AW: Löschen nur wenn ... von: walter
Geschrieben am: 11.11.2012 11:34:16

Hallo Hajo,
danke.
Geht das auch ohne Change ?
Du hattest mir schon ein Makro mit Change gegeben, da wird das Datum
gesetzt.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 14 And Target = "" Then
Application.EnableEvents = False
Range(Target.Offset(0, -1), Target.Offset(0, -2)) = ""
Application.EnableEvents = False
End If
'------ das 1. --------------------------------
Dim rngRange As Range
Set rngRange = Intersect(Range("V4:V" & Rows.Count), Target)
If Not rngRange Is Nothing Then
Application.EnableEvents = False
rngRange.Offset(0, -2).FormulaR1C1 = "=IF(RC2<>"""",TODAY(),"""")"
rngRange.Offset(0, -2).Value = rngRange.Offset(0, -2).Value
Application.EnableEvents = True
End If
Application.EnableEvents = True

mfg walter


  

Betrifft: AW: Löschen nur wenn ... von: Hajo_Zi
Geschrieben am: 11.11.2012 11:39:10

Nein, Kopieren den neuen Code in Change.

Gruß Hajo


  

Betrifft: AW: Löschen nur wenn ... von: walter
Geschrieben am: 11.11.2012 11:45:45

Hallo Hajo,

das geht doch nicht, dann wird doch immer das Datum aktualisiert.
mfg walter


  

Betrifft: AW: Löschen nur wenn ... von: Hajo_Zi
Geschrieben am: 11.11.2012 11:56:37

Hallo Walter,

der zweite Code wird nicht ausgeführt bei Änderung in Spalte N.

GrußformelHomepage


  

Betrifft: Doch von: walter
Geschrieben am: 11.11.2012 12:00:57

Hallo Hajo,
sorry, habe die gleich Zelle bzw. Spalte wie für das Einfügen.
Ich möchte ja nur, weil die Tabelle geschützt ist, das dann der Name gelöscht werden kann
wenn das Datum aktuell ist. Also man hatte sich verschrieben.
Damit halt ausversehen keine andere Zelle gelöscht wird, soll geprüft
werden. Ist das Datum 2 Spalten nach links von Heute ja, wenn kleiner dann nicht.
mfg walter


  

Betrifft: AW: Doch von: Hajo_Zi
Geschrieben am: 11.11.2012 12:02:37

Hallo Walter,

Dazu kann ich nichts schreiben. Das habe ich nicht gesehen. Entgegen meiner Norm habe ich die Datei schon nachgebaut und der 2. Code wird nicht ausgeführt bei Änderung in Spalte N.

Gruß Hajo


  

Betrifft: mein Makro von: walter
Geschrieben am: 11.11.2012 12:19:25

Hallo Hajo,
danke erst mal das Du nachgestellt hast.
Hier mein Makro:
klappt leider nicht Warum auch immer.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 22 And Target = "" Then
Application.EnableEvents = False
Range(Target.Offset(0, -1), Target.Offset(0, -2)) = ""
Application.EnableEvents = False
End If
Selection.ClearContents

'------ das 1. --------------------------------
Dim rngRange As Range
Set rngRange = Intersect(Range("V4:V" & Rows.Count), Target)
If Not rngRange Is Nothing Then
Application.EnableEvents = False
rngRange.Offset(0, -2).FormulaR1C1 = "=IF(RC2<>"""",TODAY(),"""")"
rngRange.Offset(0, -2).Value = rngRange.Offset(0, -2).Value
Application.EnableEvents = True
End If
Application.EnableEvents = True
'----------------------------------------------------------------

mfg walter



  

Betrifft: AW: mein Makro von: Hajo_Zi
Geschrieben am: 11.11.2012 12:34:49

Hallo Walter,

mein Makro,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 14 And Target = "" Then
        Application.EnableEvents = False
        Range(Target.Offset(0, -1), Target.Offset(0, -2)) = ""
        Application.EnableEvents = False
    End If
    Dim rngRange As Range
    Set rngRange = Intersect(Range("V4:V" & Rows.Count), Target)
    If Not rngRange Is Nothing Then
        Application.EnableEvents = False
        rngRange.Offset(0, -2).FormulaR1C1 = "=IF(RC2<>"""",TODAY(),"""")"
        rngRange.Offset(0, -2).Value = rngRange.Offset(0, -2).Value
        Application.EnableEvents = True
    End If
End Sub
Gruß Hajo


  

Betrifft: Herzlichen Dank von: walter
Geschrieben am: 11.11.2012 13:18:46

Hallo Hajo,
danke für alles.
Bei mir klappt das nicht.
Schönen Sonntag noch...
mfg walter


  

Betrifft: AW: Herzlichen Dank von: Matze,Matthias
Geschrieben am: 11.11.2012 13:30:35

Hallo Walter
in deinem Makro If Target.Column = 22 And Target = "" Then
in Hajo Makro If Target.Column = 14 And Target = "" Then

was ist denn nur die richtige Spalte 14 oder 22 N oder V ??

Matze


  

Betrifft: AW: Herzlichen Dank von: Hajo_Zi
Geschrieben am: 11.11.2012 14:21:49

Hallo Walter,

ich habe Deinen Code aus dem Beitrag kopiert und damit getestet. Wie Matthias festgestellt hat sieht Dein letzter Code anders aus. Das ist eben der Vorteil, wenn man seinen Original Code in den Beitrag kopiert.
ich werde das nicht weiter testen, da ja schon mein erster Test umsonst war.

Gruß Hajo


  

Betrifft: Nochmals Danke habe dies ... -) von: walter
Geschrieben am: 11.11.2012 14:44:52

Hallo Hajo,
habe dieses Makro mal zusammengebastelt, es klappt.
Schönen Dank.

Sub MS_Eingabe_löschen()
     
     If ActiveCell.Offset(0, -2) = Date Then
        ActiveSheet.Unprotect (getStrPasswort)
        Range(ActiveCell.Offset(0, -2), ActiveCell).Select
        Range(ActiveCell.Offset(0, 2), ActiveCell).ClearContents
        ActiveCell.FormulaR1C1 = ""
        ActiveCell.Offset(0, 2).Select
      ' ActiveCell.Select
    Else
 MsgBox "Sie können nicht löschen,              " & Chr(13) _
       & Chr(13) & "entweder Datum < als Heute   oder    " & Chr(13) _
       & Chr(13) & "Zelle ist Leer !   " & Chr(13) _
       & Chr(13), 48, " Hinweis !"        'Sheets("Start").Select
    End If
End Sub
mfg walter


 

Beiträge aus den Excel-Beispielen zum Thema "Löschen nur wenn ..."