636 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,

habe folgendes Problem und totaler VBA-Neuling! :)
Ich möchte ein Makro über Tabellenblätter (Anzahl der Blätter ist variabel) laufen lassen, welches in einen bestimmten Bereich eine Wertekopie erzeugt.

Für nur ein Tabellenblatt würde mein Makro so aussehen:

[i]Sub Wertekopie()
'
' Wertekopie Makro

    Range("J3:K129").Select
    
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub[/i]


Da das Makro aber ein paar bestimmte Tabellenblätter auslassen soll und die Anzahl der zu berücksichtigen Tabellenblätter variieren kann, wollte ich mit Ausschlüssen arbeiten.
Die Ausnahmen, welche [u]nicht[/u] durch das Makro angesprochen werden sollen wären:
Tabelle2, Tabelle3, Tabelle42, Tabelle5, Tabelle58, Tabelle6

Könnt ihr mir helfen?

Vielen lieben Dank im Voraus!
David

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo David,

das folgende Makro gehört in eine [url=http://www.excelbeispiele.de/Modul.htm]Standardmodul[/url] deiner Arbeitsmappe.
Die Liste mit den Tabellen, die nicht bearbeitet werden sollen, musst du natürlich entsprechend ergänzen:

[code]Sub werte()

Dim i As Long
Dim j As Long
Dim arrTabellen
Dim bbearbeiten As Boolean

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'hier werden die Tabellen aufgelistet, die nicht bearbeitet werden sollen
arrTabellen = Array("Tabelle2", "Tabelle3", "Tabelle5")

'Alle Arbeitsblätter der Arbeitsmappe durchlaufen
For i = 1 To ThisWorkbook.Worksheets.Count
 bbearbeiten = True
 'Prüfen ob Tabelle zu den Ausnahmen gehört
 For j = LBound(arrTabellen) To UBound(arrTabellen)
  If ThisWorkbook.Worksheets(i).Name = arrTabellen(j) Then
   bbearbeiten = False   'falls ja, dann Marker auf Falsch setzen
   Exit For
  End If
 Next j
 'Nur Formeln in Werte umwandeln, wenn Marker auf Wahr ist
 If bbearbeiten = True Then
  With ThisWorkbook.Worksheets(i).Range("J3:K129")
   .Copy
   .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  End With
 End If
 
Next i

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub[/code]

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.!

Wow, super vielen Dank für die schnelle Antwort!

Hab den Code in ein Modul eingetragen.

Bekomme allerdings bei Ausführung des Makros für die Zeilen

  [i] .Copy
   .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

[/i]den Fehler:

[i]Laufzeitfehler '1004'
Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.[/i]

Beste Grüße,
David
0 Punkte
Beantwortet von
Hallo M.O.!

Fehler lag bei mir!

Funktioniert super!!!

Vielen lieben Dank und schönes Wochenende!

David
...