6.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo, ich berechne in einer Tabelle einige Aufgaben mit Hilfe eines Makros in einer ausgeblendeten Tabelle über Zielwertsuche. Für das Blatt "Eingabe" habe ich ein Makro mit deren Hilfe die aktuelle Tabelle in einem neuen Blatt gespeichert wird. Gleichzeitig werden auch noch die Makro´s ("Speichern" und "Löschen") gespeichert. auch die Verbindung zur Zielwertsuche ist noch aktiv. Ich möchte aber nur die Werte einschließlich Formate und evtl. der bedingten Formatierung einzelner Zellen gespeichert haben. Wer kann hier helfen?

Private Sub Speichern_Click()

Dim strName As String
strName = ActiveSheet.Range("F3")
On Error Resume Next
strName = Worksheets(strName).Name
If Err > 0 Then
ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Range("F3")
ActiveSheet.UsedRange.Copy
ActiveSheet.UsedRange.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
MsgBox "Es gibt schon ein Tabellenblatt " & strName
End If
Err.Clear
On Error GoTo 0
End Sub

6 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

erstelle zuerst ein neues leeres Arbeitsblatt und kopiere dann die Werte und Formatierungen des Ausgangsblattes.

Bis später,
Karin
0 Punkte
Beantwortet von
So habe ich mir am Anfang auch geholfen, aber da ich die Funktion regelmäßig benötige, möchte ich das Ganze mit einem Makro regeln. Vieleicht gibt es ja doch noch einen passablen Weg.
Das Makro "Speichern" habe ich mit einer Befehlsschaltfläche auf den Bereich H59 bis I60 gelegt.
Gruß
Hans-Peter
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Hans-Peter,

und was hindert dich daran, den von mir beschriebenen Ablauf per Makro auszuführen?

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,
Ich habe das jetzt ausprobiert. Bei der manuellen Makroaufzeichnung war es nicht möglich das neue Tab-Blatt zu benennen. Daher habe ich meine Makro-Aufzeichnung mit dem alten Makro kombiniert. Es scheint auch zu fuktionieren. Ich hoffe das es auch sauber programmiert ist, da ich z.Teil nicht weiß, was die einzelnen Befehle bedeuten.
Sub Makro1()
'Dim strName As String
strName = ActiveSheet.Range("F3")
On Error Resume Next
strName = Worksheets(strName).Name
If Err > 0 Then
Cells.Select
Selection.Copy
Sheets.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Name = Range("F3")
Else
MsgBox "Es gibt schon ein Tabellenblatt " & strName
End If
Err.Clear
On Error GoTo 0
End Sub
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Hans-Peter,

das Makro kann man noch ein klein wenig ändern, da nicht alle Zellen sondern nur die belegten Zellen kopiert werden müssen:
Sub Makro1()
Dim strName As String
Dim strZelle As String
strName = ActiveSheet.Range("F3")
On Error Resume Next ' Fehler abfangen falls es bereits ein Tabellenblatt mit diesem Namen gibt
strName = Worksheets(strName).Name ' Prüfung ob ein Tabellenblatt mit dem Namen schon vorhanden ist
If Err > 0 Then ' Tabellenblatt gibt es noch nicht
strZelle = ActiveSheet.UsedRange.Cells(1, 1).Address ' Adresse der linken oberen Zelle des benutzten Bereichs
ActiveSheet.UsedRange.Copy ' benutzten Bereich kopieren
Sheets.Add ' neues Tabellenblatt einfügen
Range(strZelle).PasteSpecial Paste:=xlPasteValues ' Werte einfügen
Range(strZelle).PasteSpecial Paste:=xlPasteFormats ' Formate einfügen
ActiveSheet.Name = Range("F3") ' aktives Tabellenblatt umbenennen
Else
MsgBox "Es gibt schon ein Tabellenblatt " & strName
End If
Err.Clear ' Fehler zurücksetzen
On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
End Sub

Außerdem kann man einige Parameter bei Paste weglassen, da sie Standardeinstellungen sind und man sie nur benötigt, wenn man andere als die Standardeinstellungen verwenden will.

Ich hoffe, die Kommentar helfen dir ein wenig, den Code zu verstehen.

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,
ich möchte mich bedanken. Es funktioniert gut und ich weiß etwas mehr als vorher.
Jetzt noch zwei Fragen:
-Wie kann ich in einer Zelle auch mehrere tiefgestellte Zeichen (an 2. bis 4. Stelle) mit dieser Formatierung copieren? (Analog ist das bei griechischen Zeichen an 2. Stelle)
-Wie kann ich in einer verbundenen Zelle das durch Striche (mittels "Zeichnen") dargestellte Wurzelzeichen mit copieren?
...