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

Nicht alle Tabellen werden abgearbeitet

Nicht alle Tabellen werden abgearbeitet
Peter
Guten Tag
Ich habe ein Workbook mit den Tabellennamen "2" - "31", "Erstellt am 1. des Mt", sowie anderen Tabellen.
Mit nachfolgendem Code möchte ich in den Tabellen "2" - "31" und "Erstellt am 1. des Mt" alles im UsedRange löschen; die restlichen Tabellen sollen unberührt bleiben.
Der code läuft durch. Komisch ist nur, dass in den Tabellen "4" bis "9" nichts gelöscht wird.
Ist mir vollkommen unklar, weshalb das der Fall ist.
hat jemand eine Idee?
Danke und Gruss, Peter
Sub inhalte_1_to_31_loeschen()
Dim strActiveCell As String, strActiveSheet As String, shName As String
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'Application.DisplayAlerts = False
ThisWorkbook.Activate
strActiveSheet = ActiveSheet.Name
ActiveCell.Activate
strActiveCell = Selection.Address
Dim tabz As Integer
Dim i As Integer
'Inhalte löschen
tabz = ActiveWorkbook.Worksheets.Count '
For i = 1 To tabz
shName = Worksheets(i).Name
Select Case shName
Case 1 To 31
With Worksheets(shName * 1).UsedRange
.Clear
End With
Case "Erstellt am 1. des Mt"
With Worksheets(shName).UsedRange
.Clear
End With
Case Else
End Select
Next i
Sheets(strActiveSheet).Activate
Range(strActiveCell).Activate
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Nicht alle Tabellen werden abgearbeitet
15.09.2010 15:36:47
Nepumuk
Hallo,
ganz einfach, du benutzt hier: Worksheets(shName * 1) die Namen der Tabelle als Index. Der Name und der Index stimmen aber nur überein, wenn z.B. die Tabelle mit dem Namen '2' auch genau die 2. Tabelle un der Mappe ist.
lass mal den Code laufen:
Sub inhalte_1_to_31_loeschen()
    
    Dim objWorksheet As Worksheet
    
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    For Each objWorksheet In ThisWorkbook.Worksheets
        Select Case objWorksheet.Name
            Case 1 To 31, "Erstellt am 1. des Mt"
                objWorksheet.UsedRange.Clear
        End Select
    Next
    
    Set objWorksheet = Nothing
    
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Nicht alle Tabellen werden abgearbeitet
15.09.2010 16:31:54
Peter
Hallo Nepumuk
Vielen Dank für deine Antwort
Ich habe deinen Code eingebaut. Es hat mir jedoch nicht alles gelöscht. Nun habe ich die Datei soweit geleert und verkleinert, dass ich sie hochladen konnte.
Die Einträge der Tabellen 4, 7, 8, 9
werden nicht gelöscht. Ich habe dies in einer Excel 2000 und einer Excel XP Umgebung ausgetestet.
Da bin ich ratlos! Wäre super, wenn du das Hindernis erkennen könntest.
Danke und Gruss, Peter
https://www.herber.de/bbs/user/71564.xls
AW: Nicht alle Tabellen werden abgearbeitet
15.09.2010 18:22:21
Nepumuk
Hallo,
Problem ist, die Namen sind keine numerischen Werte sondern Strings. Versuch es mal so:
Public Sub inhalte_1_to_31_loeschen()
    
    Dim objWorksheet As Worksheet
    Dim strSourceArray(1 To 31) As String
    Dim intIndex As Integer
    
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    For intIndex = 1 To 31
        strSourceArray(intIndex) = CStr(intIndex)
    Next
    
    For Each objWorksheet In ThisWorkbook.Worksheets
        If UBound(Filter(strSourceArray, objWorksheet.Name)) > -1 Or _
            objWorksheet.Name = "Erstellt am 1. des Mt" Then _
            objWorksheet.UsedRange.Clear
    Next
    
    Set objWorksheet = Nothing
    
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    
End Sub

Gruß
Nepumuk
P.S. Den ganzen Select-Senf kannst du weg lassen, die Prozedur Selectiert auch nichts und der Cursor bleibt in der Zelle in der er zuletzt stand. Auch DisplayAlerts musst du nicht ausschalten, die Prozedur kann keinen Alarm auslösen.
Anzeige
AW: Nicht alle Tabellen werden abgearbeitet
15.09.2010 21:35:22
Peter
Hallo Nepumuk
Vielen Dank - das ist perfekt.
Auch die Bemerkung zum Select Zeugs lasse ich gerne weg - habe mich ja auf Anraten des Forums in der Zwischenzeit möglichst daran gehalten, nicht zu selektieren.
Die Alerts hatte ich berücksichtigt, da ich befürchtete, möglicherweise würden die gelöschten Daten im Zwischenspeicher landen und da dieser gelegentlich gross werden könnte, wollte ich entsprechende Hinweise unterbinden.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige