Microsoft Excel

Herbers Excel/VBA-Archiv

VBA: Worksheet wird nicht eingeblendet

Betrifft: VBA: Worksheet wird nicht eingeblendet von: Andre
Geschrieben am: 29.08.2014 11:07:23

Guten Morgen liebes Forum!

Folgendes Problem bringt mich um den Verstand:

In einer Arbeitsmappe existieren insgesamt 29 Worksheets. Die Arbeitsmappe wurde in dem Zustand gespeichert, dass nur das 1. Worksheet eingeblendet ist, die anderen 28 sind "VeryHidden". Wird die Arbeitsmappe geöffnet, werden die 28 ausgeblendeten teilweise (je nach Berechtigung) eingeblendet und zum Schluss das 1. Worksheet wieder ausgeblendet. So weit, so gut.

Alles funktioniert so weit ganz gut, jedoch wird mir beim Öffnen der Arbeitsmappe genau das 12. Worksheet nicht eingeblendet und ich kann mir nicht erklären, warum. Ich habe schon die Benennung überprüft, wobei unabhängig von der Benennung der Index ja immer noch 12 ist. Die Worksheets sind benannt von "Tabelle01(…) bis Tabelle29(…)"

Dim i As Byte
For i = 2 To 27
If i = 8 Or i = 9 Or i = 11 Or i = 16 Or i = 17 Then
i = i + 1
Else
Sheets(i).Visible = xlSheetVisible
End If
Next i

Ich bin für jeden Tip dankbar!

Im Voraus allen ein schönes Wochenende!

Gruß,

Andre

  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: yummi
Geschrieben am: 29.08.2014 11:13:09

Hallo Andre
i nimmt bei dir folgende WErte an:
2
3
4
5
6
7
8 wird zu 9
10
11 wird zu 12
13
14
15
16 wird zu 17
18
..
27
also wird 9 12 und 17 nie eingeblendet.
Eine Schleifenvariable innerhalb einer Schleife zu manipulieren ist sehr gefährlich

Gruß
yummi

PS: Benutz den debugger dann siehst du es


  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: Andre
Geschrieben am: 29.08.2014 11:44:10

Hallo Yummi!

Danke für deine erklärende Antwort, so verstehe ich es wohl etwas besser. Mit dem Debugger habe ich mich (kleinlaut) leider noch nicht beschäftigt, das werde ich nachholen. Dann habe ich mit meiner Variante wohl eher zufällig ein paar der Worksheets übersprungen, die ich auch überspringen wollte und dabei Kollateralschäden erzielt... Auf jeden Fall werde ich mir Funktionsweise von Debugger und Select Case nach Feierabend mal zu Gemüte führen.

Vielen Dank für die Mühe!

Gruß
Andre


  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: Rudi Maintaire
Geschrieben am: 29.08.2014 11:16:08

Hallo,
das ist ganz schlechter Stil, innerhalb einer For-Next-Schleife die Laufvariable zu verändern.

Dim i As Byte
For i = 2 To 27
  Select Case i
    Case 8, 9, 11, 16, 17
      'nix passiert
    Case Else
      Sheets(i).Visible = xlSheetVisible
  End Select
Next i

Gruß
Rudi


  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: Andre
Geschrieben am: 29.08.2014 11:37:42

Hallo Rudi,

normalerweise habe ich mehr Stil, aber in VBA kämpfe ich um's nackte Überleben! Ich bewege mich erst seit kurzer Zeit in VBA und sehe den Wald vor lauter Bäumen nicht. Oft gibt es für das gleiche Problem unterschiedliche Lösungen. Warum meine Lösung ausgerechnet bei Nr. 12 den Geist aufgibt, weiß ich zwar immer noch nicht, aber deine Lösung funktioniert hervorragend und ist wohl auch geeigneter.

Danke für die Mühe, ich konnte mein Wissen wieder einmal erweitern!

Gruß,
Andre


  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: Rudi Maintaire
Geschrieben am: 29.08.2014 12:15:21

Hallo,
Warum meine Lösung ausgerechnet bei Nr. 12 den Geist aufgibt, weiß ich zwar immer noch nicht,
wenn i = 11 erhöhst du i auf 12. Bei Next i wird i somit zu 13. In den Else-Zweig kommt also nie eine 12.

Gruß
Rudi


  

Betrifft: AW: VBA: Worksheet wird nicht eingeblendet von: Adis
Geschrieben am: 29.08.2014 13:57:35

Hallo

Wenn ich mir die For Next Schleife so ansehe hatte da jemand eine gute Idee, aber aus Unwissenheit einen dummen Fehler gemacht. Das passiert gerne bei Anfaengern. (mir auch) Nur Mut, aus solchen Fehlern lernt man programmieren!

Wenn ich den Gedanken richtig verstanden habe sollen die Blaetter 8, 9, 11, 16, 17 übersprungen werden. Das passiert auch ordnungsgemaess, wenn die naechste Zeile mit -i plus 1- einfach gelöscht wird! Die Bedingung ist ja erfüllt. Die Variable i wird nach der End İf Anweisung automatisch weiter gezaehlt. Erhöht man -i- vorher kommt der Zaehler durcheinander.

If i = 8 Or i = 9 Or i = 11 Or i = 16 Or i = 17 Then
i = i + 1 'diese Zeile einfach löschen. alter Praktiker Trick zum überspringen

Gruss Adis


 

Beiträge aus den Excel-Beispielen zum Thema "VBA: Worksheet wird nicht eingeblendet"