Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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

Makro zum Löschen kürzen?

Makro zum Löschen kürzen?
08.10.2019 16:53:54
Marcs
Hallo zusammen,
ich hab in einer Excel Datei mehrere Tabellenblätter die per Button->Passwortabfrage->Bestätigung->Makro jeweils in unterschiedlichen Bereichen geleert werden sollen.
Ich hab mir dazu etwas zusammengebaut was auch soweit,wie gewollt funktioniert.
Nur denke ich, dass geht bestimmt kürzer und da hört es bei mir auch schon wieder auf.
Vielleicht hat da ja jemand eine Idee:
Grüsse

Sub Alle_Tab_loeschen()
Dim sPassWord As String
sPassWord = InputBox("Löschung vorbereiten:", , "Mein Passwort")
Select Case sPassWord
Case BE_Passwort
If MsgBox("Möchten Sie wirklich alle vorhandenen Planwerte in dieser Exceldatei  _
löschen?", _
vbYesNo + vbExclamation, "Daten löschen?") = vbYes Then
Application.ScreenUpdating = False
Call Werte_kopieren_8H
With Worksheets("Tab1").Range("V5:OB6, V14:OB26, V41:OB41, V43:OB62,  _
V78:OB78, V80:OB97, V112:OB112, V114:OB131") 'Bereich
.ClearContents 'alle Zellwerte löschen
.ClearComments 'alle Kommentare löschen
With .Interior 'Hintergrundfarbe auf "keine" setzen
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
With Worksheets("Tab2").Range("M8:BZ82")
.ClearContents
.ClearComments
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
With Worksheets("Tab3").Range("K8:AO82")
.ClearContents
.ClearComments
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
With Worksheets("Tab4").Range("M8:BZ82")
.ClearContents
.ClearComments
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
With Worksheets("Tab5").Range("F13:BS88")
.ClearContents
.ClearComments
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
End If
Worksheets("Tab1").Select
Case Else
Beep
MsgBox "Gibbet nicht! ;-)"
End Select
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Löschen kürzen?
08.10.2019 17:10:05
Daniel
Hi
sieht doch schon gut aus.
ggf reicht dir ja ein
Sheets("...").Range("...").Clear

pro Tabellenblatt aus.
das löscht dann aber nicht nur Inhalte, sondern auch alle Formate.
Wenn es einzelne Formate gibt, die nicht gelöscht werden sollen, musst du natürlich jeden zu löschenden Inhalt einzelen löschen.
Dann könnte man aber die betroffenen Zellbereiche in einem Array ablegen und in einer Schleife abarbeiten:
dim Bereiche(1 to 5) as string
dim i as Long
Bereiche(1) = "Tab1!"V5:OB6,V14:OB26,V41:OB41,V43:OB62,V78:OB78, V80:OB97,V112:OB112,V114:OB131" _
Bereiche(5) = "Tab5!"F13:BS88"
for i = 1 to ubound(Bereiche)
With Range(Bereiche(i))
.ClearContents
.ClearComments
.Interior.pattern = xlnone
end with
Next
Gruß Daniel
Anzeige
AW: Makro zum Löschen kürzen?
08.10.2019 17:10:16
Regina
Hi,
da auf den jeweiligen Blättern jeweils unterschiedliche Bereiche abgearbeitet werden sollen, würde mir nur einfallen, das eigentliche Löschen in eine Sub auszulagern, die dann mit dem entsprechenden Range als Parameterwert aufgerufen wird.
Sub Alle_Tab_loeschen()
Dim sPassWord As String
sPassWord = InputBox("Löschung vorbereiten:", , "Mein Passwort")
Select Case sPassWord
Case BE_Passwort
If MsgBox("Möchten Sie wirklich alle vorhandenen Planwerte in dieser Exceldatei  _
löschen?", _
vbYesNo + vbExclamation, "Daten löschen?") = vbYes Then
Application.ScreenUpdating = False
Call Werte_kopieren_8H
Call loeschen(Worksheets("Tab1").Range("V5:OB6, V14:OB26, V41:OB41, V43: _
OB62, V78:OB78 , V80:OB97 , V112:OB112 ,V114:OB131"))
Call loeschen(Worksheets("Tab2").Range("M8:BZ82"))
Call loeschen(Worksheets("Tab3").Range("K8:AO82"))
Call loeschen(Worksheets("Tab4").Range("M8:BZ82"))
Call loeschen(Worksheets("Tab5").Range("F13:BS88"))
End If
Worksheets("Tab1").Select
Case Else
Beep
MsgBox "Gibbet nicht! ;-)"
End Select
End Sub
Sub loeschen(rng_bereich As Range)
With rng_bereich
.ClearContents
.ClearComments
With .Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
End Sub

Anzeige
AW: Makro zum Löschen kürzen?
08.10.2019 20:01:55
Marcs
Hallo Daniel, hallo Regina,
vielen Dank für die Antwort
@Regina
würde das Auslagern in seperate Subs das Makro eigentlich nicht nur Aufteilen anstatt zu verkürzen?
@Daniel
Da ich ja ein absoluter Neuling bin und erst seit einigen Tagen mit VBA beschäftigt bin, wie müsste ich denn nun dieses Array in meinen Code einbauen, damit der wie gewünscht funktioniert?
Sieht zumindest als stark gekürzte Version aus.
vielen Dank
AW: Makro zum Löschen kürzen?
08.10.2019 21:24:48
Regina
... na ja, Du würdest den Code zum Löschen nur einmal schreieb und dann für verschiedene Ranges aufrufen.
Gruß
Regina
AW: Makro zum Löschen kürzen?
08.10.2019 22:14:32
Marcs
Hi Regina,
Jetzt hab ich verstanden wie es gemeint ist. hab da irgendwie in eine andere Richtung gedacht, mein Fehler, sorry.
Werde eure Vorschläge mal in Ruhe checken.
Vielen Dank euch erstmal
Anzeige
AW: Makro zum Löschen kürzen?
08.10.2019 21:41:11
Daniel
Hi
als erstes solltest du mal prüfen, ob das .Clear zum Löschen aller Inhalte nicht ausreicht.
dann hast du pro Blatt nur eine Zeile und das mit dem Array lohnt sich nicht.
ansonsten schon so wie ich es dir gezeigt habe.
ich würde dich schon bitten, dir das anzuschauen, das Prinzip zu verstehen und dann das selber in deinen Code einzubauen.
Gruß Daniel
AW: Makro zum Löschen kürzen?
08.10.2019 22:08:43
Marcs
Hallo Daniel,
Also .Clear ist dann doch etwas zuviel des Guten. Im Prinzip sollen die ganzen Bereiche nur gelert werden, Schriftfarbe auf "Automatic" und Hintergrundfarbe auf "Keine" gesetzt werden. Rahmenlinien sollen erhalten bleiben.
Ich werde mal schauen ob ich das hinbekomme. Ich gebe Rückmeldung
Gruss
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige