Hier anmelden!

Willkommen bei Excellent

Anwendung auf mehrere Tabellenblätter

Beitrag verlinken am 10.05.2011 geschrieben
  • nach oben

Hallo, bin  mal wieder am rätseln:

Muss  auf 12 Tabellenblättern den Inhalt von J3:CW24 löschen, anschl. soll der Cursor auf A9 positioniert und die Tabelle, bevor ich neue Daten eingeben kann, als leere Vorlage-Datei abgespeichert werden. Damit ich das Makro "Löschen" nicht 12x eingeben muss, versuchte ich mich mit    -- For i = 1 To 12  usw. --  doch gelingt mir das nicht. Habe das Thema offensichtlich noch immer nicht ganz verstanden.

Sub Inhalt_zurückstellen()
    Dim i As Integer
    Application.ScreenUpdating = False      'Bildschirmaktualisierung ausschalten
        For i = 1 To 12
        ThisWorkbook.Worksheets(i).Range("J3:CW24").Value = _
        Selection.ClearContents 
    Next i
    Application.ScreenUpdating = True      'Bildschirmaktualisierung einschalten

Save as Testversuch.xlsm  
        
       
End Sub

Würde mich freuen wenn man mir wieder einmal helfen könnte.

Freundl. Grüße

Hans Paul

Beitrag verlinken am 10.05.2011 geschrieben
  • nach oben

Hallo Hans Paul,
nur wenige Änderungen und es läuft:

Sub Inhalt_zurückstellen()
    Dim i As Integer
    Application.ScreenUpdating = False      'Bildschirmaktualisierung ausschalten
        For i = 1 To 12
          ThisWorkbook.Worksheets(i).Range("J3:CW24").ClearContents
          ThisWorkbook.Worksheets(i).Activate
          ThisWorkbook.Worksheets(i).Range("A9").Select
    Next i

    Application.ScreenUpdating = True      'Bildschirmaktualisierung einschalten

ThisWorkbook.SaveAs "D:\Uebungen\Testversuch.xlsm"
        
End Sub

Die Methode "ClearContents" kannst Du entweder auf einen angegebenen Bereich ThisWorkbook.Worksheets(i).Range("J3:CW24").ClearContents oder auf einen zuvor mit der Maus selektierten Bereich mit Selection.ClearContents anwenden.

Bei der Methode SaveAs muss das Objekt, auf das die Methode angewandt wird, vorangestellt werden und der Dateiname einschließlich Pfad als String übergeben werden.

Unter Einsatz eines With-Konstruktes lässt sich das etwas übersichtlicher schreiben:

Sub Inhalt_zurückstellen()
    Dim i As Integer
    Application.ScreenUpdating = False      'Bildschirmaktualisierung ausschalten
        For i = 1 To 12
          With ThisWorkbook.Worksheets(i)
            .Range("J3:CW24").ClearContents
            .Activate
            .Range("A9").Select
          End With
    Next i
    Application.ScreenUpdating = True      'Bildschirmaktualisierung einschalten

ThisWorkbook.SaveAs "D:\Uebungen\Testversuch.xlsm"
           
End Sub

Viel Erfolg - Dirk

Beitrag verlinken am 10.05.2011 geschrieben
  • nach oben

Hallo Hans Paul,
noch eine Ergänzung. Du sprachst von Vorlage. Im Excel-Jargon wäre das ein Template mit Makros, also *.xltm (bis Excel 2003: *.xlt). Um solch eine Vorlage zu speichern, musst Du ab Excel 2007 unbedingt das Fileformat angeben. In Deinem Beispiel würde die SaveAs-Zeile lauten:

ThisWorkbook.SaveAs Filename:="D:\Uebungen\Testversuch.xltm", _
                                 FileFormat:=xlOpenXMLTemplateMacroEnabled

Bleibst Du beim Workbook anstelle von Template (wie im obigen Beitrag), würde die Zeile ganz korrekt lauten:

ThisWorkbook.SaveAs Filename:="D:\Uebungen\Testversuch.xlsm", _
                                 FileFormat:=xlOpenXMLWorkbookMacroEnabled

Gruß - Dirk

Beitrag verlinken am 10.05.2011 geschrieben
  • nach oben

Hallo Dirk, besten Dank für Deine Hilfe, es ist tatsächlich geplant, dieses Formblatt als Vorlage zu speichern. Ich bin beim Aufzeichnen des Makros als Vorlage an der Hürde des Speicherns von Makro als Vorlage gescheitert.

Nochmals meinen herzlichsten  Dank, werde Deine Hilfe gleich einarbeiten.

Freundliche Grüße

Hans Paul

  • Statistiken: 4 Beiträge | 5 Aufrufe

Hier anmelden

Du bist noch kein Mitglied der Community?

Community-Details

  • Suche nach:

  • Community-Name

    Excellent
    Die Excel-Community von ExcelDaily

  • Dein Gastgeber ist

    Martin Althaus

  • Online seit

    17.03.2008

  • Mitglieder

    454

  • Sprache

    Deutsch

powered by mixxt
  • v1.1.1
  • (highfive)