34 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich habe folgendes Problem:

Meine Excel Datei verfügt über mehrere Tabellenblätter, die sich über Formeln befüllen. Nun möchte ich, dass beim klick auf einen button alle Formeln des Dokuments in Werte umgewandelt werden und "speichern unter" erfolgt.

Mein Code sieht im Moment wie folgt aus:

Private Sub CommandButton1_Click()

Dim speicher

With ActiveSheet.UsedRange
.Cells = .Cells.Value
End With

 speicher = Application.Dialogs(xlDialogSaveWorkbook).Show
End Sub

So werden aber lediglich die Formeln des ersten Tabellenblattes als Werte festgestellt. Wie muss ich den Code nun ändern, damit dies in allen Tabellenblätter geschieht?

Vielen lieben Dank vorab :-)

Johanna

3 Antworten

0 Punkte
Beantwortet von m-o Profi (18.3k Punkte)

Hallo Johanna,

das kannst du z.B. so machen:

Private Sub CommandButton1_Click()
Dim arrTabellen() As Variant
Dim t As Integer

'hier die Namen der Tabellenblätter eintragen
arrTabellen = Array("Tabelle1", "Tabelle2", "Tabelle3")

'nun nacheinander die Tabellenblätter durchlaufen
'vom ersten Blatt (LBound) bis zum letzten Blatt (Ubound)
For t = LBound(arrTabellen) To UBound(arrTabellen)
  With ThisWorkbook.Worksheets(arrTabellen(t)).UsedRange
     .Cells = .Cells.Value
  End With
Next t

'Speichern-Unter-Dialog aufrufen
Application.Dialogs(xlDialogSaveWorkbook).Show

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Bearbeitet

Vielen Dank für die schnelle Antwort :-)

Ich habe das gleich mal so kopiert und bekomme nun leider folgenden Fehler:

Laufzeitfehler '1004': Anwendungs-oder objektdefinierter Fehler

Der Bereich

  .Cells = .Cells.Value

wird markiert...

?!?

Private Sub CommandButton1_Click()

Dim arrTabellen() As Variant
Dim t As Integer

'hier die Namen der Tabellenblätter eintragen
arrTabellen = Array("Stammdaten", "Leistungen", "Absatz u DB")

'nun nacheinander die Tabellenblätter durchlaufen
'vom ersten Blatt (LBound) bis zum letzten Blatt (Ubound)
For t = LBound(arrTabellen) To UBound(arrTabellen)
  With ThisWorkbook.Worksheets(arrTabellen(t)).UsedRange
     .Cells = .Cells.Value
  End With
Next t

'Speichern-Unter-Dialog aufrufen
Application.Dialogs(xlDialogSaveWorkbook).Show


End Sub

Vielen Dank & lG

0 Punkte
Beantwortet von m-o Profi (18.3k Punkte)

Hallo Johanna,

bei mir läuft das Makro ohne Probleme. Da ich deine Tabelle nicht kenne, ist eine Ferndiagnose fast unmöglich. Vielleicht kannst du mal eine Beispieldatei hochladen, in der der Fehler auch auftaucht. Wie du eine Datei hier ins Forum einstellen kannst du hier nachlesen: Anleitung

Gruß

M.O.

...