vba设置wksheetvariables

我试图在第二个工作簿上设置一个工作表的variables(在最后一行显示一个对象错误,模块)。 我已经有两个工作簿的variables。 我的代码如下所示:

Option Explicit Sub Kopie() Application.ScreenUpdating = False Const StBestand = "Stambestand.xlsm" Const Competenties = "Competenties.xlsx" Dim stam, comp As String Dim PathOnly, ijk, FileOnly As String Dim ijkWs, stamWs As Worksheets ijk = ThisWorkbook.FullName FileOnly = ThisWorkbook.Name PathOnly = Left(ijk, Len(ijk) - Len(FileOnly)) stam = PathOnly & "\" & StBestand comp = PathOnly & "\" & Competenties Set ijkWs = ActiveSheet Workbooks.Open stam Set stamWs = stam.Sheets("stambestand") 

我已经尝试引用活动工作表,没有运气和工作表/工作簿组合的其他引用的主机。 您的意见非常感谢。

更新:坦克input的家伙。 我已经将表单更改为声明部分中的表单,并在设置variables表之前打开了工作簿。

您应该在打开工作簿时设置工作簿对象,并使用它来创build工作表对象。

 Dim newWB as WorkBook Set newWB = Workbooks.Open(stam) Set stamWs = newWB.WorkSheets("stambestand") 

您需要Worksheettypes而不是Worksheets

 Dim ijkWs, stamWs As Worksheet 

但是在这里不直观的只是如果Worksheettypes,而不是总是使用的forms:

 Dim ijkWs As Worksheet, stamWs As Worksheet. 

这适用于所有的Dim s。

您需要存储已打开的工作簿,然后获取工作表, stam.Sheets只是一个string,所以没有属性如此stam.Sheets是不正确的。

 Dim wb As Workbook Set wb = Workbooks.Open(stam) Set stamWs = wb.Sheets("stambestand") 

我也认为你改为:

 stam = PathOnly & StBestand comp = PathOnly & Competenties 

否则你会得到一个双\无效的path,如果当前的书没有保存在任何地方。

而不是玩弄名称和使用PathOnlyvariables,只需使用ThisWorkbook.Path方法。 更快,更容易,也消除了错误的可能性。 可能你已经在PathOnlyvariables的末尾加了一个反斜杠,所以你的stamvariables看起来像这样 – “workbook_path \\ Stambestand.xlsm”,这可能是你的问题的原因。

尝试

 stam = ThisWorkbook.Path & "\" & StBestand