vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Excel   |   VB-Versionen: VBA10.04.03
Arbeitsblatt wechseln, aber richtig (Excel/VBA)

Vor dem Wechseln in ein anderes Arbeitsplatz sollte man prüfen, ob dies überhaupt vorhanden ist...

Autor:   Heinz WölfelBewertung:     [ Jetzt bewerten ]Views:  265.767 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Der einfache VBA- Befehl zum Anzeigen eines anderen Arbeitsblattes

Wie man in EXCEL unter VBA zu einem anderen Arbeitsblatt (Sheet) wechselt hat sich sicher schon herumgesprochen (man kann es ja notfalls auch aufzeichnen):

Sub Makro1()
  Sheets(4).Select
  ' ... oder
  Worksheets(4).Select
End Sub
Sub Makro2()
  Sheets("Mein_Arbeits_Blatt").Select
  ' ... oder
  Worksheets("Mein_Arbeits_Blatt").Select
End Sub

Das ist ja auch nicht falsch so. Was aber, wenn im ersten Fall (Makro1) die Arbeitsmappe weniger als vier Blätter hat? Oder aber wenn im zweiten Fall (Makro2) die Mappe überhaupt kein Sheet mit diesen Namen hat? Natürlich! Excel meckert rum und der User erhält eine Fehlermeldung!
Damit der User nicht auf der VBA-Oberfläche landet und der Programmierer augenblicklich mit einem Schimpfwort in Verbindung gebracht wird, sollten diese Fehler abgefangen werden!

Was ist zu tun?
Na logisch, man muss vor dem Wechsel in eine andere Mappe immer nachschauen, ob diese vorhanden ist! Im ersten Fall (Makro11) prüft man die Anzahl der Mappen. Im zweiten Fall (Makro12) wird über die Auflistung aller Sheets in der Mappe nachgeschaut, ob es das gewünschte Blatt schon gibt.

Anmerkung:

  • Um Makro11 zu testen, sollten weniger als 4 Sheets in der Mappe sein!
  • Um Makro12 zu testen, bitte das Blatt "Mein_Arbeits_Blatt" löschen!

Sub Makro11()
  ' Testen ob es mindestens 4 Arbeitsblätter
  ' in der Mappe gibt und ... 
  If Sheets.Count < 4 Then
    ' ... wenn nein: eine entsprechende Fehlermeldung ausgeben:
    MsgBox " Umschalten auf Blatt 4 nicht möglich ! ", _ 
      48, " Arbeitsblatt nicht vorhanden :-( "
  Else
    ' ... wenn ja: Anzeige auf das 4-te Blatt umschalten.
    Sheets(4).Select
  End If
End Sub
Sub Macro12()
  ' Hilfsvariablen
  Dim i As Integer
  Dim bExists As Boolean
 
  ' Testen ob's ein Sheet mit dem Namen 
  ' "Mein_Arbeits_Blatt" gibt und ...
  For i = 1 To Sheets.Count
    If Sheets(i).Name = "Mein_Arbeits_Blatt" Then 
      bExists = True: Exit For
    End If
  Next i
 
  If bExists Then
    ' ... wenn ja: Anzeige auf dieses Blatt umschalten
    Sheets("Mein_Arbeits_Blatt").Select
  Else
    ' ... wenn nein: ein solches Blatt erstellen.
    Beep
    Sheets.Add ActiveSheet.Name = "Mein_Arbeits_Blatt"
  End If
End Sub

Alternative:
Wer die For-Next-Schleifen nicht so mag, kann den Anfang von Makro12 auch so abändern:

  ' Hilfsvariablen
  Dim ws As Worksheet
  Dim bExists As Boolean
 
  ' Alle vorhandenen Arbeitsblätter durchlaufen
  For Each ws In Worksheets
    If ws.Name = "Mein_Arbeits_Blatt" Then 
      bExists = True: Exit For
    End If
  Next
 
  ...

Dieser Tipp wurde bereits 265.767 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel