Excel 2010 VBA: If mit mehreren Bedingungen

Liebe Wissende,

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

Hallo Alex,

probiere es mal mit einer und-verknüpfung (If shtName „Info“ And shtName "Dat…)

vielleicht hilft das ja.

Gruß
V14t

Moin,

mir ist nicht ganz klar, was Du vorhast, aber das Ersetzen von Or durch And könnte helfen.

Gruß Ralf

zur Verdeutlichung
Hallo Alex,

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.

Gruß, Andreas

Guten Morgen,

Danke für Eure schnellen Rückmeldungen. 

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.

Viele Grüße
Alex

Hallo Alex,

hast Du es it dem „And“ denn schon ausprobiert?

hilft das alles nichts, kannst Du es auch mit einer verschachtelten If-Prüfung versuchen.
Bsp.:

If shtName "Info" Then
 If shtName "Data from SAP" Then
 If shtName "VLookup" Then
 If shtName "Pivot" Then
 sht.Select
 ...
 End If




 End If




 End If




End If

Vielleicht ist das ja eine Lösung. Sie ist vielleicht etwas komplizierter, leider neige ich immer dazu :smile: , aber das sollte auch funktionieren.

Gruß
V14t

Hallo Alex,

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

Case Else
formatieren = True

End Select

If formatieren Then

End If

fg

Dirk.P