Formeln durch Werte ersetzen, in mehreren Tabellenblättern

Basti__1990

Admiral
Registriert
Dez. 2010
Beiträge
9.702
Hi,
ich habe eine riiiiießen Excel Tabelle mit vielen Formeln drinnen. Ich will das die Formeln durch die Werte ersetzt werden. Dazu hab ich auch was gefunden.

http://vba1.de/vba/066formeln.php

Aber ich bräuchte das für alle Tabellenblättern (ich hab da weit über 20).
Kann mir vielleicht jemand eine Lösung verraten, ich hab leider keine Ahnung von Markos und VBA.

Danke :)
 
Na ja,

für dich mag es ein "riiiiießen" Aufwand sein, das 2. Makro 20 mal aufzurufen, aber das ist einfach eine Ansichtssache.

Füge das folgende Makro in "DieseArbeitsmappe" ein und führe es aus. Wie du das einfügst kannst du an zig Stellen nachlesen.
Code:
Option Explicit

Sub AllFormula2Value()
   Dim i As Integer, Sh As Integer
   
   Sh = Worksheets.Count
   For i = 1 To Sh
      With Sheets(i).Cells
           .Copy
           .PasteSpecial Paste:=xlPasteValues
         Application.CutCopyMode = False
      End With
      Cells(1, 1).Select
   Next i
End Sub
 
danke, es geht ja nicht darum alle 20 nur einmal durch zu gehen, sondern ich brauche das öfters ;-)
 
Etwas in der Richtung habe ich mir auch gedacht (>1600 Beiträge sprechen für sich), darum habe ich ja auch den Code angehängt ;).
 
das ist wirklich super nett von dir.
sag mal, ist es eigentlich auch möglich per Makro die einzelnen Tabellenblätter abzuspeichern mit ihrem Namen als Dateinamen?
 
Moin Basti,

klar ist das möglich ...
Code:
Option Explicit

Sub TabsEinzelnSpeichern()
   Dim i As Integer
   Dim Path As String
   Dim FullName As String
   Dim Ueberschreiben As Boolean
   
   Ueberschreiben = False  'Bei TRUE wird vor dem überschreiben nachgefragt
   Path = "C:\Data\"
   Application.ScreenUpdating = False
   Application.DisplayAlerts = Not Ueberschreiben
   
   For i = 1 To Sheets.Count
      Sheets(i).Copy
      FullName = Path & ActiveSheet.Name
      ActiveWorkbook.SaveAs FullName
      ActiveWorkbook.Close savechanges:=False
   Next i
   Application.ScreenUpdating = True
   MsgBox "Alle Blätter im Verzeichnis  " & Path & "  gespeichert!"
End Sub
Passe aber noch den Pfad für den Speicherort an. Und wenn du nicht willst, dass eine vorhandene Datei ohne Rückfrage überschreiben wird, dann setze die Variable Ueberschreiben auf TRUE.

[Edit]
Ich vergaß: Du musst den Code in einem MODUL speichern!
 
Zuletzt bearbeitet: (Änderung (Edit))
Ich habe versucht die beiden zusammen zu führen aber irgendwie schmeist mich mit
"Laufzeit Fehler 1004
Die Copy-Methode des Worksheet-Objekts konnte nicht ausgeführt werden"

Code:
Option Explicit 

Sub AllFormula2Value() 
   Dim i As Integer, Sh As Integer 
   Dim Path As String, Dim FullName As String 
   Dim Ueberschreiben As Boolean         
   Sh = Worksheets.Count 
   For i = 1 To Sh 
      With Sheets(i).Cells 
           .Copy 
           .PasteSpecial Paste:=xlPasteValues 
         Application.CutCopyMode = False 
      End With 
      Cells(1, 1).Select 
   Next i 

   Ueberschreiben = False 
   Path = "C:\Test" 
   Application.ScreenUpdating = False 
   Application.DisplayAlerts = Not Ueberschreiben 

   For i = 1 To Sheets.Count 
        [B]Sheets(i).Copy [/B]        
        FullName = Path & ActiveSheet.Name 
        ActiveWorkbook.SaveAs FullName 
        ActiveWorkbook.Close savechanges:=False 
   Next i 
   Application.ScreenUpdating = True 
   MsgBox "Alle Blätter gespeichert" 

End Sub

Beim Debuggen schickt er mich an die fett markierte Stelle "Sheets(i).Copy"

Kann mir jemand helfen? und JA ich bin ein VBA-Noob :(
 
Zuletzt bearbeitet:
Setze vor FullName = ... eine Zeilenschaltung! So sind 2 Anweisungen in 1 Zeile und das ist die Fehlerursache.
 
das war nur ein kopierfehler ;)
Im makro ist jeder befehl in einer eigenen zeile, aber scheinbar liegts an meinem rechner. danke für deine hilfe =)
 
Zurück
Oben