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

Löschen mehrerer Zellbereiche

Löschen mehrerer Zellbereiche
18.12.2013 18:04:01
Sentel
Hallo Forum,
ich hab da mal wieder ein paar kleine Schwierigkeiten im VBA und da ich bei meinem letzten Besuch hier so rasend schnell eine perfekte Unterstützung erfahren habe, dachte ich mir ich bitte euch nochmal um Hilfe.
Ich erstelle gerade einen Dienstplan, der je nach Mitarbeiteranzahl verschiedene Spalten aus- und einblenden soll (per ComboBox).
Nun möchte ich per klick auf einen CommandButton wenn das Tabellenblatt geschützt ist alle Zellen die noch ungeschützt sind wieder leeren, aber ohne die Formatierung zu löschen. Mir wird aber jedes Mal ein Fehler 13(Typen unverträglich) angezeigt.
Ich bekomme es einfach nicht hin.
Hier mal der Code zum ein-/ausblenden der Spalten (Ausschnitt)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.CountLarge = 1 Then Exit Sub
If Target = Range("Hp9") Then

Hier wird dann der Fehler angezeigt

If Range("Hp9").Value = 1 Then
Columns("C:K").Select
Selection.EntireColumn.Hidden = False
Columns("l:HN").Select
Selection.EntireColumn.Hidden = True
End If

und nun der Code zum löschen (hier nur für einen Bereich)
Private Sub CommandButton1_Click()
Sheets("vorläufige Dienstplanung").Activate
Range("c9:G39").ClearContents
Unload UserForm23
UserForm1.Show
End Sub

Ich verzweifle hier irgendwann noch.
Danke schonmal im Voraus
Gruß Sentel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen mehrerer Zellbereiche
19.12.2013 09:37:28
fcs
Hallo Sentel,
bezüglich des Ausblendens der Spalten ist mir die Logik deines Makros nicht klar.
Du prüfst erst, wie viele Zellen geändert werden.
Wenn nur 1 Zelle dann Makro sofort verlassen.
Dann willst du Target (das sind alle gerade geänderten Zellen) mit dem Wert der Zelle HP9 vergleichen.
Das funktioniert aber nicht. Du kannst nicht in einer Anweisung einen Zellbereich mit meheren Zellen per "=" mit einer Zelle vergleichen. Deshalb kommt die Fehlermeldung.
Beschreibe mal genau, was wie geprüft werden soll und was dann passieren soll.
Zum Löschen der Inhalte von nicht geschützten Zellen in mehreren Bereichen.
Hier ein allgemeiner Ansatz.
Private Sub CommandButton1_Click()
Dim Zelle As Range, Statuscalc As Long
With Application
Statuscalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With Sheets("vorläufige Dienstplanung")
For Each Zelle In .UsedRange 'oder auch .Range("C9:HN39")
If Zelle.Locked = False Then
Zelle.ClearContents
End If
Next Zelle
End With
With Application
Statuscalc = .Calculation
If .Calculation  Statuscalc Then .Calculation = Statuscalc
.ScreenUpdating = True
.EnableEvents = True
End With
Unload UserForm23
UserForm1.Show
End Sub

Wenn du die Zellbereiche über Spalten- und Zeilennummern genauer vorgeben kannst, dann können ggf. in einer Schleife die entsprechenden Zellbereiche abgearbeitet werden. Das geht schneller, als jede Zelle einzeln zu prüfen.
Gruß
Franz

Anzeige
AW: Korrektur Makro
19.12.2013 09:55:28
fcs
Hallo Sentel,
im Makro war noch ein Fehler, so dass der Berechnungsmodus nicht zurückgesetzt wird.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim Zelle As Range, Statuscalc As Long
With Application
Statuscalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With Sheets("vorläufige Dienstplanung")
For Each Zelle In .UsedRange 'oder auch .Range("C9:HN39")
If Zelle.Locked = False Then
Zelle.ClearContents
End If
Next Zelle
End With
With Application
If .Calculation  Statuscalc Then .Calculation = Statuscalc
.ScreenUpdating = True
.EnableEvents = True
End With
Unload UserForm23
UserForm1.Show
End Sub

Anzeige
AW: Korrektur Makro
19.12.2013 19:09:36
Sentel
Hallo Franz,
du hast ja so recht. Als ich das mit dem "=" las war mir alles klar, ich war nur mittlerweile so benebelt, dass mir die Lösung unendlich entfernt schien. Ich hab jetzt direkt mal mein Makro nach ein paar Stunden absoluter Excel-Abstinenz deinem angeglichen....und was soll ich sagen, es läuft wie geschmiert. 1000 Dank.
Gruß Sentel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige