Clever-Excel-Forum

Normale Version: [VBA] Während eines Makros Tabellenblätter nacheinander anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend allerseits,

ich benötige die Hilfe bei einem grundsätzlichen Problem.
Ich habe ein Makro, welches verschiedene Blätter erstellt. Am Ende der Erstellung und noch während des Makros sollen die Blätter jeweils aufgerufen und eine Msg-Box angezeigt werden. Im Prinzip soll das eine Art geführtes Tutorial werden.

Das Makro läuft zufriedenstellend durch, allerdings zeigt er mir das entsprechende Tabellenblatt nicht an, während die Msgbox aktiv wird. Er zeigt mir immer nur das "Start"-Tabellenblatt an, von wo aus ich das Makro starte....

Code:
Workbooks(str_Dateiname_neu).Sheets("Personal").Visible = True
    Workbooks(str_Dateiname_neu).Sheets("Personal").Activate
    MsgBox "Wir befinden uns auf dem Tabellenblatt 'Personal'." & vbCrLf & vbCrLf & "Hier werden alle Mitarbeiter*innen eingetragen. Bitte achte darauf, dass keine Leerzeilen entstehen. Ein Überschreiben ist möglich. Sollte ein Löschung vorgenommen werden, sollte der Befehl 'Tabellenzeile löschen' verwendet werden (Rechtsklick innerhalb der Tabelle)", vbOKOnly, Title:="Personal"

Das wäre einer der Parts als Beispiel. Ach und application.screenupdating aktiviere ich unmittelbar davor wieder.

Habt ihr eine Idee?

Grüße
Hi,

es gibt das Workbook_ SheetActivate_ Ereignis  

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  MsgBox "das gerade aktivierte Tabellenblatt heisst: " & Sh.Name
End Sub

es wird, wie der Name bereits sagt, durch das aktivieren/auswählen  eines Tabellenblatts gefeuert. Das einfügen eines neuen Tabellenblattes feuert es ebenfalls.

Nun brauchst du lediglich die  zur Tabelle passende entsprechende Meldung generieren.

VG Juvee
Hi,

leider funktioniert das so nicht - also zumindest nicht während des Makros ... ich möchte die msgbox auch nur ein Mal haben und nicht jedes Mal, wenn das Blatt geöffnet wird.
Hi

du hast das Makro vmtl.  nicht in den Codebereich von DIESEARBEITSMAPPE kopiert!

falls doch, zeige mal dein gesamtes Makro

VG Juvee
Ja doch das habe ich auch ausprobiert. Da bekomme ich bei jeder Erstellung eine Msgbox - das will ich aber nicht. Ich möchte nach dem Erstellen aller Blätter zwei individuelle Msgboxen haben und dabei soll das dazugehörige Blatt vorher geöffnet werden ... das tut es bei deinem Makro leider auch nicht. Ich denke, ich werde Abstand von der Idee machen - wäre ganz cool gewesen, aber dann halt auf andere Weise... trotzdem Danke :)
Hi,

je genauer die Beschreibung, desto eher gibt es eine passende Lösung.

Was hält dich davon ab, beim aktivieren einer Tabelle durch eine Abfrage zu entscheiden, ob etwas gemacht werden soll oder nicht?!

VG Juvee
Moin!
Ich sehe kein Problem!
Folgendes funktioniert einwandfrei:
Code:
Sub Test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
  With ws
    .Activate
    MsgBox .Name
  End With
Next
End Sub

Gruß Ralf
Hi,

dem kann ich nur zustimmen. Was hingegen nicht funktioniert ist - wenig überraschend - folgendes:
Code:
Sub Test()
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
  With ws
    .Activate
    MsgBox .Name
  End With
Next
Application.ScreenUpdating = False
End Sub
Also EasY: hast du vielleicht zufällig das ScreenUpdating ausgeschaltet?
Moin,

wenn ich das richtig sehe, liegen die Anzuzeigenden Blätter eben nicht in ThisWorkbook. 

Viele Grüße
derHöpp
Hi,

das mach bei mir aber keinen Unterschied...

So funktioniert es:
Code:
Sub Test()
Dim ws As Worksheet
'Application.ScreenUpdating = False
For Each ws In Workbooks("AndereDatei.xlsx").Worksheets
  With ws
    .Activate
    MsgBox .Name
  End With
Next
End Sub
und wenn man das Kommentarzeichen entfernt, dann nicht.