【问题标题】:vba setting wksheet variablevba设置wksheet变量
【发布时间】:2018-01-11 04:43:12
【问题描述】:

我正在尝试为第二个工作簿上的工作表设置一个变量(在最后一行出现对象错误,stamWs)。我已经为两个工作簿提供了一个变量。我的代码如下所示:

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")

我尝试过引用活动工作表,但没有运气,还有许多其他对工作表/工作簿组合的引用。非常感谢您的意见。

更新:输入人员的坦克。我在声明部分将工作表更改为工作表,并在设置变量工作表之前打开了工作簿。

【问题讨论】:

    标签: vba excel worksheet


    【解决方案1】:

    不要使用名称和使用 PathOnly 变量,只需使用 ThisWorkbook.Path 方法。更快更容易,也消除了出错的可能性。 可能您在 PathOnly 变量的末尾已经有一个反斜杠,所以您的 stam 变量看起来像这样 - “workbook_path\\Stambestand.xlsm”,这可能是您的问题的原因。

    试试

    stam = ThisWorkbook.Path & "\" & StBestand 
    

    【讨论】:

      【解决方案2】:

      您需要Worksheet 类型而不是Worksheets

      Dim ijkWs, stamWs As Worksheet
      

      但这里不直观地只有stamWs 如果类型为Worksheet,而是始终使用以下形式:

      Dim ijkWs As Worksheet, stamWs As Worksheet.
      

      这适用于您所有的Dims。

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

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

      我也觉得你改成:

      stam = PathOnly & StBestand
      comp = PathOnly & Competenties
      

      否则,如果当前图书未保存在任何地方,您将得到一个双 \ 一个无效路径。

      【讨论】:

      • 感谢您的帮助。您的 anwser 也非常有用。但是我只能将一个标记为可接受的答案。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        相关资源
        最近更新 更多