2016-04-12 2 views
0

Ich kopierte alle Makros aus Modul 1 in einer Datei 1 ein anderes Modul, darunter diese:Warum öffnet VBA-Makro die Datei, von der es kopiert wurde, nicht das Blatt in der aktuellen Arbeitsmappe?

Sub OpenMonth4tabs() 
' 
' OpenMonth4tabs Macro 
' Closes all sheets except Base Values 
' Opens sheets for Month 4, prepares Base Data for month 4 view 
' 
Call HideAllSheets 
Call PrepareMonth4Base 

Sheets("M4 Sales Record").Visible = True 
Sheets("M4 Sales Record").Select 
Sheets("M4 P&L").Visible = True 
Sheets("M4 P&L").Select 
Sheets("M4 Sales KPIs").Visible = True 
Sheets("M4 Sales KPIs").Select 
Sheets("M4 Aftersales KPIs").Visible = True 
Sheets("M4 Checklist").Visible = True 
Sheets("M4 Checklist").Select 
Range("C10").Select 

End Sub 

Doch obwohl die Datei, die ich in der Arbeit bin Registerkarten mit den genauen Namen wie das Original (es hat ist spätere Version mit einem ähnlichen Namen), wenn es ausgeführt wird, öffnet die ursprüngliche Datei und die Registerkarten, nicht die Registerkarten in der aktuellen Arbeitsmappe. Ich kann nichts in dem Code sehen, der die ursprüngliche Arbeitsmappe identifiziert, und ich weiß nicht, wie ich das verhindern kann.

Aus welchem ​​Grund bezieht sich der Code auf eine andere, geschlossene Arbeitsmappe? Wie kann ich es in der neuen Arbeitsmappe arbeiten und nicht die alte öffnen? Jede Hilfe wird sehr geschätzt, es macht mich verrückt!

+5

Was ist in 'HideAllSheets' und' PrepareMonth4Base' Subs? vielleicht aktivieren sie das "alte" Arbeitsbuch und so verweisen die nicht vollständig qualifizierten Arbeitsblattverweise auf diese "alten" Arbeitsmappen – user3598756

Antwort

0

Sie können eine aktive Arbeitsmappenreferenz am Anfang des Makros hinzufügen und diese dann zum Vorablegen der Sheets-Referenzen verwenden. Etwas wie:

dim wb as workbook 
set wb = ActiveWorkbook 

Call HideAllSheets 
Call PrepareMonth4Base 

wb.worksheets("M4 Sales Record").Visible = True 
wb.worksheets("M4 Sales Record").Select 
etc 
1

Danke für die Vorschläge, von denen ich gelernt habe. In der Zwischenzeit hat ein Kollege die Wurzel des Problems gefunden: Die Makros funktionierten perfekt, aber ich kopierte auch über ein Arbeitsblatt mit Schaltflächen, die mit Makros verknüpft waren, und die Links waren speziell auf die Makros in der alten Arbeitsmappe und nicht auf die aktuelle . Jedes Mal, wenn ich eine Schaltfläche zum Ausführen eines Makros verwendete, wurde das alte Arbeitsblatt geöffnet und das Makro ausgeführt. Wenn ich das Makro aus der Makro-Box ausgeführt habe, funktionierte es in der neuen (derzeit aktiven) Arbeitsmappe, ohne die alte zu öffnen. Also war die Frage, die ich stellte, die falsche Frage, aber ich sehe jetzt, wie man das Problem löst, indem man die Kontrollknöpfe mit der korrekten Arbeitsmappe re-linked.

Verwandte Themen