Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nach Workbook.close zu Aktivem Workbook springen

Nach Workbook.close zu Aktivem Workbook springen
11.06.2013 11:27:09
TOM
Guten Morgen zusammen
Stehe auf dem Schlauch und wäre um ein Tipp für folgendes Problem dankbar:
Ich habe zwei Workbooks offen. Per VBA schliesse ich das Workbook1 und möchte dann
ins Workbook2 erstes Blatt springen.
Besten Dank und Gruss
TOM

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbooks("WB1.xlsx").Sheets(1).Activate '_oT
11.06.2013 11:36:35
TOM
Hallo NoNet
Besten Dank für Deine prompte Antwort. Habe ich auch versucht aber wo soll ich die Anweisung reinschreiben?
Gruss
TOM

Anzeige
Nachfrage
11.06.2013 11:49:26
Erich
Hi Tom,
oben schribsgt du: "Per VBA schliesse ich das Workbook1". Wo tust du das?
Genau dahinter gehört vermutlich die neue Anweisung.
Wenn du schreibst: "aber leider gehts nicht in die Anweisung:-(", führt das noch nicht viel weiter.
Worin (oder worum?) geht's denn?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Nachfrage
11.06.2013 11:56:19
TOM
Hi Erich
Per Buttonbefehl im Workbook1, speichere ich unter einem neuen Namen ab und schliesses dann.
Dann ist das Workbook2 aktiv aber das falsche Blatt!
Gruss und Mahlzeit
TOM

AW: Nach Workbook.close zu Aktivem Workbook springen
11.06.2013 11:37:28
Matthias
Hallo
Da Du nur 2 Mappen offen hast wird das Andere ja automatisch zum Activen Workbook
In DieseArbeitsmappe
Private Sub Workbook_Activate()
Worksheets(1).Activate
End Sub
Gruß Matthias

Anzeige
AW: Nach Workbook.close zu Aktivem Workbook springen
11.06.2013 11:44:55
TOM
Grüezi Matthias
Besten Dank für Deine Anregung. Das habe ich auch gedacht und getestet aber leider gehts nicht in die Anweisung:-(
Gruss
TOM

für alle etwas verwirrend ...
11.06.2013 12:19:51
Matthias
Hallo

    Wen Du 2 Workbooks offen hast
  • Workbook1

  • Workbook2

  • und nun Workbook1 schliesst ist Workbook2 automatisch das ActiveSheet
    dorhin gehört auch der Code hin. Wie geschrieben in DieseArbeitsmappe
    Das habe ich getestet und funktioniert.

Gruß Matthias

ja, verwirrend ...
11.06.2013 12:41:36
Erich
Hi Matthias,
wenn Workbook1 schließt, ist Workbook2 automatisch das ActiveWorkbook, nicht das ActiveSheet.
Für die Lösung des Problems ist IMHO das Ereignismakro nicht notwendig/sinnvoll.
Das Ereignismakro startet bei jeder Aktivierung - nicht nur nach dem Schließen des Workbook1.
Ob das erwünscht/sinnvoll ist?
Vielleicht besteht das Problem darin, dass sich der Code wohl in Workbook1 befindet, dieses aber geschlossen wird.
Vielleicht ist es notwendig, Workbook2 und Workbook2.Sheets(1) zu aktivieren, bevor Workbook1 geschlossen wird.
@Tom: Zeig uns bitte mal deinen bisherigen Code oder eine Beispielmappe - sonst wird das nichts...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: ja, verwirrend ...
11.06.2013 13:17:29
TOM
Hallo zusammen
Besten dank für Eure Tipps und Geduld. In der Tat ist es verwirrend und für mich schwierig zu beschreiben!
Workbook1 offen
Workbook2 offen, per Button löse ich folgenden Code aus:
Private Sub cmdDrucken_Click()
If MsgBox("Gelbes Blatt in Drucker eingelegt?", vbQuestion + vbYesNo, "Erinnerung!!") =  _
vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Else
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"H:\AVOR-GT\08_Musterkarten\01_Nummern-Verlauf\" & "Nr" & Range("F4") & ".xlsx",  _
FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Danach erscheint das Workbook1 und das letzte Blatt ist aktiv.
Ich möchte aber das erste Blatt aktive!
Gruss
TOM

Anzeige
AW: ja, verwirrend ...
11.06.2013 13:22:11
Klaus
Hi,
dann aktivier doch einfach Sheet1 am Ende des Codes. zB so:
Private Sub cmdDrucken_Click()
dim wkbOld as Workbook
set wkbOld = Activeworkbook
If MsgBox("Gelbes Blatt in Drucker eingelegt?", vbQuestion + vbYesNo, "Erinnerung!!") =  _
vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Else
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"H:\AVOR-GT\08_Musterkarten\01_Nummern-Verlauf\" & "Nr" & Range("F4") & ".xlsx",  _
FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
wkbold.activate
sheets(1).activate
End Sub
die wkbOld-Sache kann eigentlich raus (du bist ja im richtigen Workbook ...), ich habe das aber immer gerne im Code stehen da es so beim Lesen nachvollziehbarer ist wo der Code sich befindet.
Grüße,
Klaus M.vdT.

Anzeige
AW: ja, verwirrend ...
11.06.2013 17:26:58
Erich
Hi Klaus,
wenn man mal das irrelevante Drucken und Speichern weglässt, entsteht aus deinem Code
das hier:

Sub aaaaa()
Dim wkbOld As Workbook
Set wkbOld = ActiveWorkbook
Application.DisplayAlerts = False
' ...  restl Code spielt hier keine Rolle
ActiveWorkbook.Close
Application.DisplayAlerts = True
wkbOld.Activate
Sheets(1).Activate
End Sub
Das kannn nicht funktionieren. wkbOld = ActiveWorkbook wird geschlossen und kann danach nicht aktiviert werden...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

du hast recht! AW: ja, verwirrend ...
12.06.2013 10:17:34
Klaus
Hi,
ich habe
ActiveWorkbook.SaveAs
mit
Workbook.Open
verwechselt, weil es im Kontext um den Workbook-Wechsel ging.
sheet(1).select könnte aber trotzdem die Lösung sein :-)
Grüße,
Klaus M.vdT.

Anzeige
Natürlich! ich meinte auch ActiveWorkbook oT
12.06.2013 00:07:31
Matthias

Nach Workbook.close zu Aktivem Workbook springen
11.06.2013 11:44:34
Erich
Hi Tom,
wie (und warum) willst du "zu Aktivem Workbook springen"? Das ist doch schon aktiv!
Wenn du nach dem Close das 1. Sheet der MAppe aktivieren möchtest, dann einfach mit
ActiveWorkbook.Sheets(1).Activate
Das funzt auch dann, wenn sich der Name der Mappe mal ändert.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Nach Workbook.Close geht nix mehr
11.06.2013 17:14:41
Erich
Hi Tom,
nur noch mal sicherheitshalber die Voraussetzungen:
Im Hintergrund ist eine Mappe "H.xls" geöffnet, die in deinem Code bislang nicht vorkommt.
In der aktiven Mappe "A.xls" steht der Code, diese Mappe wird gedruckt, gespeichert und geschlossen.
Durch das Schließen der Mappe A.xls wird Mappe H.xls zur aktiven Mappe.
Nun dein Wunsch: Am Ende soll Sheets(1) von H.xls aktiv sein.
Und das Problem:
Wenn du im Code nach dem Close das erste Blatt aktivierst, geht das nicht,
denn die Anweisung wird gar nicht mehr ausgeführt.
Also: Du musst Sheets(1) der Mappe H.xls vor dem Close aktivieren.
Hier dein alter und ein geänderter Code:

Option Explicit
Private Sub ALTcmdDrucken_Click()
If MsgBox("Gelbes Blatt in Drucker eingelegt?", vbQuestion + vbYesNo, _
"Erinnerung!!") = vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Else
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"H:\AVOR-GT\08_Musterkarten\01_Nummern-Verlauf\" & "Nr" & _
Range("F4") & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Private Sub cmdDrucken_Click()
If MsgBox("Gelbes Blatt in Drucker eingelegt?", vbQuestion + vbYesNo, _
"Erinnerung!!") = vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Else
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"H:\AVOR-GT\08_Musterkarten\01_Nummern-Verlauf\" & "Nr" & _
Range("F4") & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
CreateBackup:=False
Workbooks(2).Sheets(1).Activate  ' vor dem Close
Application.DisplayAlerts = True ' vor dem Close
ActiveWorkbook.Close
MsgBox "nach dem Close geht nix mehr..."
End Sub

Und hier noch was zum Testen - das Problem hatte ja gar nichts zu tun mit Drucken oder Speichern...
Man kann einfach sehen, dass mit dem Close die Prozedur endet:

Sub aaTest1()
Workbooks.Open "C:\temp\H.xls"   ' Mappe im Hintergrund
Sheets(2).Select
ThisWorkbook.Activate            ' Mappe mit dem Code
MsgBox ActiveWorkbook.Name & " / " & ActiveSheet.Name & " / " & Cells(1, 1)
ThisWorkbook.Close
MsgBox "nach dem Close geht nix mehr..."
ActiveWorkbook.Sheets(1).Activate   ' wirkungslos
MsgBox ActiveWorkbook.Name & " / " & ActiveSheet.Name & " / " & Cells(1, 1)
End Sub
Sub aaTest2()
Workbooks.Open "C:\temp\H.xls"   ' Mappe im Hintergrund
Sheets(2).Select
ThisWorkbook.Activate            ' Mappe mit dem Code
MsgBox ActiveWorkbook.Name & " / " & ActiveSheet.Name & " / " & Cells(1, 1)
Workbooks(2).Sheets(1).Activate     ' wirksam
ThisWorkbook.Close
MsgBox "nach dem Close geht nix mehr..."
MsgBox ActiveWorkbook.Name & " / " & ActiveSheet.Name & " / " & Cells(1, 1)
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Nach Workbook.Close geht nix mehr
12.06.2013 10:26:25
TOM
Guten Morgen Erich
Besten Dank für Deine ausführliche Erklärung. Habe meinen Code entsprechend angepasst und läuft tiptop!
Private Sub cmdDrucken_Click()
If MsgBox("Gelbes Blatt in Drucker eingelegt?", vbQuestion + vbYesNo, "Erinnerung!!") =  _
vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Else
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"H:\AVOR-GT\08_Musterkarten\01_Nummern-Verlauf\" & "Nr" & Range("F4") & ".xlsx",  _
FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Workbooks("Musterkartenlauf.xls").Sheets(1).Activate
Workbooks("Nr" & Range("F4") & ".xlsx").Close
Application.DisplayAlerts = True
End Sub
Gruss und frohes schaffen
TOM
Anzeige

58 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige