此处的目标是设置工作表对象,然后将该工作表移动到新工作簿并继续使用该工作表对象。但是,通过移动该工作表,似乎先前与其关联的工作表对象将丢失。
测试:
假设我们在名为Book1.xlsb和Book2.xlsb的同一文件夹中有两个excel工作簿,每个工作簿中都有一个名为Sheet1的工作表。当我们打开Book1时,我们放入下面的sub并尝试使用工作表对象从另一个移动工作表。
一切"工作",但工作表对象在此过程中丢失,并在您再次尝试使用它时立即抛出错误。 是否可以将工作表移动到新工作簿而不会丢失该工作表对象关联,以便以后可以引用它?
Option Explicit
Sub test()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws As Worksheet
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Open("Book2.xlsb")
Set ws = wb2.Sheets(1)
ws.Name = "Sheet2" 'name changed to avoid conflict with the one already there
ws.Move wb1.Sheets(1)
MsgBox ws.Name 'this line throws an error, indicating that ws association has been lost
End Sub
编辑: 如果这是不可能的,我们如何可靠地将该工作表对象重新设置为我们刚刚移动的对象?
答案 0 :(得分:1)
要重置ws对象:
Set ws = wb1.WorkSheets("Sheet2")
如果你不知道这个名字,你知道它被移到了最后一个位置,对吗?
Set ws = wb1.WorkSheets(wb1.WorkSheets.Count)
如果它被移动到第一个位置,那么:
Set ws = wb1.WorkSheets(1)
答案 1 :(得分:0)
在您的代码中
<div class="title_right mid_center top_menu">
<a class="btn btn-app" href="/Home/ComoFunciona">1</a>
<a class="btn btn-app" href="/Home/Tarifas">2</a>
<a class="btn btn-app" href="/Home/Contacto">3</a>
<a class="btn btn-app" href="/Security/Account">4</a>
</div>
您随后将工作表ws移动到Book2.xlsb文件的第一张工作表
&#34;表(1)&#34;表示文件的第一张表
所以你可以像这样重置ws。
ws.Move wb1.Sheets(1)