2016-03-15 84 views
1

我有一個代碼在一個工作簿上運行,並引用另一個打開的工作簿,它可以有任何名稱,我想要切換到另一個打開的工作簿這個原因的索引號。VBA確定工作簿索引並切換到一個「其他」工作簿

用戶可以首先打開包含代碼的工作簿或其他工作簿,因此我希望能夠說如IF索引的活動工作表爲1,然後Workbooks(2).Activate,但如果索引活動工作表是2,然後是Workbooks(1)。激活,謝謝。

我有這段代碼,以確保只有2本書已經打開;

If Workbooks.Count > 2 Then 
     MsgBox "Have ONLY the new data file and this open before running :)" 
     Exit Sub 
End If 
+1

假設你只有一個窗口打開,你可以調用'activewindow.ActivateNext'從一個窗口切換到另一個窗口。 – Rory

回答

0

切換回兩個打開的工作簿之間來回在Workbooks Collection使用一些數學對ActiveWorkbook propertyThisWorkbook Property的比較。

Workbooks(IIf(CBool(Workbooks(1).Name = ThisWorkbook.Name), _ 
       1 - CBool(ActiveWorkbook.Name = ThisWorkbook.Name), _ 
       2 + CBool(ActiveWorkbook.Name = ThisWorkbook.Name))).Activate 

這應該可能伴隨着一個檢查,以確保隊列中只有兩個工作簿(如原始樣本所示)。

+0

感謝Jeeped的迴應。所以這段代碼應該選擇比代碼運行的頁面更多的頁面?我已經把它放到了我的代碼中,但是它拋出了一個400錯誤; '昏暗宏表作爲工作表 集宏表= ActiveSheet '這部分選擇其它書 工作簿(IIF(CBool​​將(工作簿(1)請將.Name = ThisWorkbook.Name),_ 1 + ABS(CBool​​函數(ActiveWorkbook.Name = ThisWorkbook.Name)),_ 2 + CBool​​(ActiveWorkbook.Name = ThisWorkbook.Name)))。激活 Dim MasterSheet As Worksheet Set MasterSheet = ActiveSheet' – jrb2b

+0

否。當兩個工作簿打開時激活備用工作簿一個應用程序實例。如果每個工作簿只有一個工作表,那麼是的,我想你的陳述可能是真實的,但是這個代碼是關於在兩個工作簿之間切換的,而不是關於選擇工作表。 – Jeeped

+0

抱歉,我把你的代碼放在我想要切換到另一本書的位置,然後希望將該表定義爲MasterSheet,稍後回撥到代碼中 – jrb2b

相關問題