1.2k Aufrufe
Gefragt in Tabellenkalkulation von b25812 Mitglied (515 Punkte)
Hallo
ich habe ein VBA die einen bestimmten Bereich in einer Liste leeren soll.
Jetzt soll diese Liste Automatisch über Nacht geleert werden. Sofern ein Anwender sie am nächsten Tag öffnet sollte sie leer gemacht werden. Ist es möglich dies in dem unteren VBA einzubinden ???
Gruß Andi


Private Sub CommandButton2_Click()
Dim Antwort

'Nachfrage, Liste leeren
Antwort = MsgBox("Liste leeren ???", 36, "Liste leeren?")

'Falls ja, Liste leeren
If Antwort = vbYes Then Range("B2:B76,D2:D76").Select
Range("D76").Activate
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-69
Range("B2").Select
End Sub

9 Antworten

0 Punkte
Beantwortet von
Hallo Andi,

über Nacht wird die Liste nicht geleert, aber beim Öffnen der Datei kann man das hinterlegen.

Gib das Makro im Modul "Diese Arbeitsmappe" ein

Private Sub Workbook_Open()
Dim Antwort

'Nachfrage, Liste leeren
Antwort = MsgBox("Liste leeren ???", 36, "Liste leeren?")

'Falls ja, Liste leeren
If Antwort = vbYes Then Range("B2:B76,D2:D76").Select
Range("D76").Activate
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-69
Range("B2").Select
End Sub

Gruß Mr. K.
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Andi,

oder Löschen ohne Abfrage nach Abgleich vom letzten Speicherdatum und aktuellen Datum beim Öffnen der Arbeitsmappe:

Private Sub Workbook_Open()

'Speicherdatum mit aktuellem Datum vergleichen
If DateValue(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value) < DateValue(Now) Then
'falls kleiner, dann Liste leeren
With ActiveSheet
.Range("B2:B76,D2:D76").ClearContents
.Range("B2").Select
End With
End If
End Sub


Auch dieser Code gehört in das VBA-Projekt der Arbeitsmappe.

Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Hallo Ihr beiden,
die Lösung von Mr.K ist gut aber das von M.O. ist ja auch nicht schlecht.
Werde den VBA einbinden und morgen das Ergebnis euch mitteilen. Greif der VBA
auch für 3 unterschiedlichen Tabellenblätter?
das 1. heist NH - BW
2. NH - Süd
3. NH - Nord

Oder reicht es wenn ich den VBA in die jeweilige Tabelle einfüge?!

Gruß Andi
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Danke euch !!!
Nur noch eine Frage: Der Code von M.O greift der auch auch mehrere Tabellblätter ?
Tabelle 1 heist NH - BW
Tabelle 2 NH - Süd
Tabelle 3 NH - Nord

Oder muß ich denn den VBA in jeder Tabelle einfügen?

Gruß Andi
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Andi,

willst du über das Workbook-Open-Ereignis mehrere Tabellenblätter ansprechen, so ändere den Code wie folgt:

Private Sub Workbook_Open()
Dim arrTabellen As Variant
Dim b As Long

'Tabellenblätter, in denen Inhalte gelöscht werden sollen
arrTabellen = Array("NH - BW", "NH - Süd", "NH - Nord")

'Speicherdatum mit aktuellem Datum vergleichen
If DateValue(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value) < DateValue(Now) Then

For b = 0 To UBound(arrTabellen)
'falls kleiner, dann Liste leeren
With ThisWorkbook.Worksheets(arrTabellen(b))
.Range("B2:B76,D2:D76").ClearContents
.Activate
.Range("B2").Select
End With
Next b

End If

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Danke M.O
werde morgen berichten ob es geklappt hat.
Gruß Andi
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Guten Morgen all,
habe es heute getestet und leider ist er stehen geblieben bei

With ThisWorkbook.Worksheets(arrTabellen(b))

ich weiß leider nicht was er da machen wollte.

Gruß Andi
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Andi,

bei meiner Testdatei funktioniert alles. Sind die Namen der Arbeitsblätter richtig geschrieben?

Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Hallo M.O.

habe es getestet und geht Super.
Danke dir nochmal.
Gruß Andi
...