vba设置wksheet变量
问题描述:
我想为第二个工作簿上的工作表设置一个变量(在最后一行上删除一个对象错误,stamWs)。我已经有两个工作簿的变量。我的代码如下:vba设置wksheet变量
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")
我试着引用活动工作表,没有运气和工作表/工作簿组合其他引用的主机。您的意见非常感谢。
更新:坦克输入的家伙。我已将表单更改为声明部分中的表单,并在设置变量表之前打开工作簿。
答
当您打开工作簿并使用它创建工作表对象时,应该设置工作簿对象。
Dim newWB as WorkBook
Set newWB = Workbooks.Open(stam)
Set stamWs = newWB.WorkSheets("stambestand")
答
而不是玩弄名称和使用PathOnly变量,只需使用ThisWorkbook.Path方法。更快,更容易,也消除了错误的可能性。 也许你在PathOnly变量的末尾已经有一个反斜杠,所以你的stam变量看起来像这样 - “workbook_path \\ Stambestand.xlsm”,这可能是你的问题的原因。
尝试
stam = ThisWorkbook.Path & "\" & StBestand
答
您需要Worksheet
类型不Worksheets
。
Dim ijkWs, stamWs As Worksheet
但这里仅unintuitively如果stamWs
型Worksheet
的,而不是总是使用形式:
Dim ijkWs As Worksheet, stamWs As Worksheet.
这适用于所有Dim
秒。
您需要存储在工作簿打开,然后拿到表,stam
只是一个串所以没有属性,以便stam.Sheets
是不正确的。
Dim wb As Workbook
Set wb = Workbooks.Open(stam)
Set stamWs = wb.Sheets("stambestand")
我还以为你改变为:
stam = PathOnly & StBestand
comp = PathOnly & Competenties
否则你会得到一个双\
的,如果当前本书不是在任何地方保存了无效的路径。
感谢您的帮助。你的anwser也很有用。不过,我只能将一个标记为可接受的答案。 – MyName