if - then -else-Anwendung

brinsche

Mitglied
:confused: Hallo ihr,

ich bin kurz vorm verzweifeln und hoffe ihr könnt mir helfen.
ich habe folgenden Code
PHP:
Range("A1").Select
    
    For I = 0 To nTypen
            If sType(I) = "IT3" Then
    ActiveSheet.PivotTables("PivotTable1").RefreshTable   'Pivottabellen aktualisiert&Anlage ausgewählt
  
      
    Range("A30").Select
    ActiveSheet.PivotTables("PivotTable2").RefreshTable
    ActiveSheet.PivotTables("PivotTable3").RefreshTable
    ActiveSheet.PivotTables("PivotTable4").RefreshTable
 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Maschine").CurrentPage = _
        "IT3"
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Maschine").CurrentPage = _
        "IT3"
    ActiveSheet.PivotTables("PivotTable3").PivotFields("Maschine").CurrentPage = _
        "IT3"
    ActiveSheet.PivotTables("PivotTable4").PivotFields("Maschine").CurrentPage = _
        "IT3"
       

    
    End If
      
 Next I

vorher werden die einzelnen Machinen in die Variable stype(i) gelesen. Wenn es jetzt für diese Maschine die ich hier aktualisieren will, keine Daten gibt, soll eine txtbox mir eine Meldung widergeben und die Pivottabellen auch nicht weiteraktualsieren sondern die sub sofort beenden.
Aber ich kriege das einfach nicht hin. wer kann mir helfen?

gruß brinsche
 
Also ich weiß noch nicht genau, was du mit folgendem Satz meinst:
"Wenn es jetzt für diese Maschine die ich hier aktualisieren will, keine Daten gibt"
(is damit dieses Type-Array gemeint - also wenn da kein Wert steht!)

Naja, hier erstmal eine allgemeine Lösung:

Code:
IF keineDatenvorhanden Then
    MsgBox("Zur aktuellen Maschine sind keine Daten vorhanden")
    Exit Sub
End If

Den Code direkt vor die Aktualisierung deiner Tabelle ... du musst noch die Bedingung und die Message-Box genauer spezifizieren, aber sollte so eigentlich laufen :rolleyes:


PS: Wenn die Bedingung als Alternative zu deiner If-Verzweigung ausgeführt werden soll, dann geht's einfach so:
Code:
If sType(I) = "IT3" Then
    ' hier stehen die ganzen Anweisungen wie oben
Else
    MsgBox("Zur aktuellen Maschine sind keine Daten vorhanden")
    Exit Sub
End If
 
Zuletzt bearbeitet:
Danke itPerly,
aber wenn ich das so mache kommt die msgbox auch wenn Daten vorhanden sind und er bricht die sub ab.
also die Pivottabelle greift ja auf eine Daten in einem anderen Tabellenblatt zu.
in die variable stype (i) werden die verschiedenen Maschinen eingelesen die in dem Tabellenblatt Daten eingegeben wurden.
es gibt z.B 4 verschieden Maschinen und für jede gibt es einen commandbutton wo dieser code hinterlegt ist.
drücke ich jetzt auf Maschine IT3 und dazu gibt es noch keine Daten soll halt die msgbox kommen und die Pivottabellen und Diagramme sollen nicht mehr aktualisiert bzw, erstellt werden.
ich muß ja irgendwo elseif platzieren und die abfrage mit <> "IT3" machen, oder?

gruß
 
Zuletzt bearbeitet:
brinsche hat gesagt.:
Danke itPerly,
aber wenn ich das so mache kommt die msgbox auch wenn Daten vorhanden sind und er bricht die sub ab.
Das wird dann wohl an deiner For-Schleife liegen - die geht ja alle Elemente von sType der Reihe nach durch. Wenn du sagst du hast alle Namen in dem Array hinterlegt, isses ja logisch, dass die Sub abbricht, weil ja nicht alle Maschinen "IT3" heißen ... :rolleyes:

Also probier mal das:
Code:
For I = 0 To nTypen
    If sType(I) = "IT3" Then
        ' hier stehen die ganzen Anweisungen wie oben
        Exit Sub
    End If
Next I
MsgBox("Zur aktuellen Maschine sind keine Daten vorhanden")


das Problem bei dir ist ein kleiner Denkfehler. Du willst ja zuerst alle Elemente durchsuchen und erst wenn im gesamten Array die Maschine nicht vorhanden ist, dann soll er abbrechen ... wenn du das in einer If-Verzweigung machst, bricht der ganze Prozess beim ersten Element ab, was nicht "IT3" heißt ...
 
Zuletzt bearbeitet:
Zurück