Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA] Während eines Makros Tabellenblätter nacheinander anzeigen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
Hi

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

falls doch, zeige mal dein gesamtes Makro

VG Juvee
Antworten Top
#5
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 :)
Antworten Top
#6
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
Antworten Top
#7
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
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?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#9
Moin,

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

Viele Grüße
derHöpp
Antworten Top
#10
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.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste