bei dem nachfolgedem Code, werden die Bedingungen des IF’s nicht beachtetet (also auch wenn das Worksheet z.B. „Info“ heißt, werden die Formatierungen vorgenommen). Der Code funktioniert aber, wenn ich nur eine Bedingung an das IF knüpfe.
Wo liegt mein Fehler?
Danke für Eure Hilfe - ich steh total auf dem Schlauch.
Viele Grüße
Alex
Sub Formatting()
Dim sht As Worksheet
Dim shtName As String
For Each sht In ActiveWorkbook.Worksheets
shtName = sht.Name
If shtName "Info" Or shtName "Data from SAP" Or shtName "VLookup" Or shtName "Pivot" Then
sht.Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Sheets("Pivot").Select
Range("A1:C1").Select
Selection.Copy
Sheets(sht.Name).Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("A:K").Select
Columns("A:K").EntireColumn.AutoFit
With ActiveSheet.PageSetup
.RightHeader = ""
.LeftFooter = ""
.PrintHeadings = False
.FitToPagesWide = 1
End With End If
Next sht
MsgBox ("All worksheets are formatted for printout now")
End Sub
drambeldier und v14t haben dir ja schon die richtige Lösung gezeigt.
Warum ist das so?
In deiner Version werden alle Überprüfungen mit ODER verbunden, d.h., sobald einer der Abfragen WAHR ist, ist der Gesamtausdruck wahr.
Angenommen, shtName ist „Info“.
Dann ist die Abfrage shtName „Info“ FALSCH. Aber die nächst Abfrage shtName "Data from SAP"
ist wahr, und damit ist der Gesamtausdruck WAHR und deine Formatierungen werden ausfegührt.
In deinen Fall soll aber (so habe ich es vestanden) die Formatierung nur ausgefüht werden, wenn das Blatt nicht „Info“ und nicht „Data from SAP“ und nicht „VLookup“ und nicht „Pivot“ heißt. Also müssen die Abfragen mit AND verbunden werden. Vielleicht wird es damit etwas klarer.
Meine Exceldatei besteht aus ca 20 Worksheets. Es sollen mit diesem Makro alle formatiert werden, aber eben nicht die, die „Pivot“, „Info“, etc heißen.
Deshalb habe ich gedacht, dass das „Or“ richtig ist.
du hast ja schon Vorschläge. Was ich benutze und was sehr übersichtlich finde wäre soetwas:
Dim formatieren As Boolean
Select Case shtName
Case „info“
formatieren = False
Case „Data from SAP“
formatieren = False
Case „VLookup“
formatieren = False
Case „Pivot“
formatieren = False