激活另一个工作簿并在该工作簿中执行功能

RB49

我有“ Workbook1”,它具有用于执行某些操作的命令按钮。在此工作簿中单击一个按钮时,它将从Outlook下载另一个工作簿,并使用变量名“ Workbook2”打开该工作簿。此后,我想在该工作簿中设置一个筛选器。但我无法做到这一点。我收到“对象变量或未设置块变量”错误。下面是我的代码。

Dim EXCELApplication As Object
Dim DefPath As Variant

Dim wb As Workbook
Dim wbName As String
Dim col2 As Long
Dim colNameF As Long
Dim colNameF1 As Long
Dim colNameF2 As Long

' Other Relevant Code Present Here'

DoEvents
    Set EXCELApplication = CreateObject("Excel.Application")
    EXCELApplication.Workbooks.Open (DefPath & strExt & ".xlsb")
    EXCELApplication.Visible = True
    EXCELApplication.Sheets("Release Level View").Activate

colNameF = Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

colNameF1 = Range("A8:DD8").Find(What:="Items", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

colNameF2 = Range("A8:DD8").Find(What:="Domain", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF1, Criteria1:="Variance", Operator:=xlOr, Criteria2:=""
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF2, Criteria1:="9S", Operator:=xlOr, Criteria2:=""

我在此特定行中出现错误。

colNameF = Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

即使我使用ActiveSheet.Range ..我仍然遇到相同的错误。有人可以告诉我问题是什么吗?


感谢BK201,即使我使用Set,我仍然会遇到相同的错误。这是供您理解的完整代码。

With targetSht
    Set aCell1 = EXCELApplication.Range("A8:DD8").Find(What:="Feb", LookIn:=xlValues, LookAt:=xlWhole, _
                    MatchCase:=False, SearchFormat:=False)

    If Not aCell1 Is Nothing Then
            col2 = aCell1.Column
            SV1 = Split(Cells(col2).Address, "$")(1)
            lRow1 = .Range(SV1 & .Rows.Count).End(xlUp).Row
    End If

    colNameF = .Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

    colNameF1 = .Range("A8:DD8").Find(What:="Items", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column

    colNameF2 = .Range("A8:DD8").Find(What:="Domain", LookIn:=xlValues, LookAt:=xlWhole, _
  MatchCase:=False, SearchFormat:=False).Column


.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF1, Criteria1:="Variance", Operator:=xlOr, Criteria2:=""
.Range("$A$8:$DD$9999").AutoFilter Field:=colNameF2, Criteria1:="9S", Operator:=xlOr, Criteria2:=""

.Cells(lRow1 + 1, SV1).Select
Selection.NumberFormat = "0"
SumV1 = SV1 & "9"
SumW1 = SV1 & lRow1
.Cells(lRow1 + 1, SV1).Formula = "=SUBTOTAL(9," & SumV1 & ":" & SumW1 & ")"
.Cells(lRow1 + 1, SV1).Select
Selection.Copy
End With

Windows("DS.xlsx").Activate
Set FindV = Range("A1:Z100").Find(What:="Dec Rel", LookIn:=xlValues, LookAt:=xlWhole, _
                    MatchCase:=False, SearchFormat:=False)
FindV.Offset(0, 4).NumberFormat = "0"
FindV.Offset(0, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

无论遇到“ cells”方法,到处都会出现相同的错误。

空置

两件事情:

(1)使用ActiveSheet或直接转到Range表示您正在从调用宏的工作簿中运行。自您打开一本新书以来,您有两个工作簿处于活动状态,但是您正在通过设置代码的方式来定位当前工作簿。

(2)此代码块可能会引起一些问题:

Set EXCELApplication = CreateObject("Excel.Application")
    EXCELApplication.Workbooks.Open (DefPath & strExt & ".xlsb")
    EXCELApplication.Visible = True
    EXCELApplication.Sheets("Release Level View").Activate

注意:EXCELApplication.Sheets如果有效,则仍然是错误的编码。将其更改为如下所示:

Dim targetBk as Workbook
Set xlApp = CreateObject("Excel.Application")
With xlApp
    Set targetBk = .Workbooks.Open (DefPath & strExt & ".xlsb")
    .Visible = True
End With
targetBk.Sheets("Release Level View").Activate

即便如此,Activate它和类似的东西也是坏事。最好变得更加明确,并与:

Dim targetBk as Workbook, targetSht As Worksheet
Set xlApp = CreateObject("Excel.Application")
With xlApp
    Set targetBk = .Workbooks.Open (DefPath & strExt & ".xlsb")
    .Visible = True
End With
Set targetSht = targetBk.Sheets("Release Level View")

With targetSht

    colNameF = .Range("A8:DD8").Find(What:="Teams").Column
    colNameF1 = .Range("A8:DD8").Find(What:="Items").Column
    colNameF2 = .Range("A8:DD8").Find(What:="Domain").Column

    .Range("$A$8:$DD$9999").AutoFilter Field:=colNameF, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
    .Range("$A$8:$DD$9999").AutoFilter Field:=colNameF1, Criteria1:="Variance", Operator:=xlOr, Criteria2:=""
    .Range("$A$8:$DD$9999").AutoFilter Field:=colNameF2, Criteria1:="9S", Operator:=xlOr, Criteria2:=""

End With

希望这可以帮助!

编辑:关于您的评论,请始终记住默认情况下Find返回Range这意味着,如果将其分配给没有任何其他属性的变量,则将分配范围给变量。不用说,这需要Set适当地发生。见下文:

Sub Test()
    Set aCell1 = Range("A1:DD8").Find(What:="Feb")
    col2 = aCell1.Column
    SV1 = Split(Cells(col2).Address, "$")(1)
    lRow1 = Range(SV1 & Rows.Count).End(xlUp).Row
    ActiveSheet.Cells(lRow1 + 1, SV1).NumberFormat = "0"
End Sub

上面的方法现在col2可以正常工作,因为可以正确识别aCell1Range具有.Column属性。另外,您的格式行(...NumberFormat = "0")是正确的。

让我们知道是否有帮助。

EDIT2:您对的使用Cells应始终合格。如果您正在使用With targetSht,则SV1 = Split(.Cells(col2).Address, "$")(1)请注意.中的.Cells无论如何,请尝试将代码块更改为下面的修改:

With targetSht

    Set aCell1 = .Range("A8:DD8").Find(What:="Feb")

    If Not aCell1 Is Nothing Then
            col2 = aCell1.Column
            SV1 = Split(.Cells(col2).Address, "$")(1)
            lRow1 = .Range(SV1 & .Rows.Count).End(xlUp).Row
    End If

    colNameF = .Range("A8:DD8").Find(What:="Teams").Column
    colNameF1 = .Range("A8:DD8").Find(What:="Items").Column
    colNameF2 = .Range("A8:DD8").Find(What:="Domain").Column

    With .Range("$A$8:$DD$9999")
        .AutoFilterMode = False
        .AutoFilter Field:=colNameF, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
        .AutoFilter Field:=colNameF1, Criteria1:="Variance", Operator:=xlOr, Criteria2:=""
        .AutoFilter Field:=colNameF2, Criteria1:="9S", Operator:=xlOr, Criteria2:=""
    End With

    .Cells(lRow1 + 1, SV1).NumberFormat = "0"
    SumV1 = SV1 & "9"
    SumW1 = SV1 & lRow1
    .Cells(lRow1 + 1, SV1).Formula = "=SUBTOTAL(9," & SumV1 & ":" & SumW1 & ")"
    .Cells(lRow1 + 1, SV1).Select
    Selection.Copy

End With

让我们知道是否有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一个工作簿的公式中使用一个工作簿的引用

来自分类Dev

将工作表从一个工作簿合并到另一个工作簿时出错

来自分类Dev

从另一个工作簿中的另一个工作表在一个工作簿中的一个Excel工作表上执行筛选宏

来自分类Dev

删除另一个工作簿中的行

来自分类Dev

尝试引用活动工作簿中的另一个工作表

来自分类Dev

从另一个工作簿运行宏

来自分类Dev

从另一个工作簿更新数据透视表工作簿中的数据

来自分类Dev

Openpyxl-将数据从Excel工作簿追加到另一个工作簿

来自分类Dev

在另一个工作簿中引用单元格作为工作表的名称

来自分类Dev

VBA,对于每个下一个-如果此工作簿中的工作表名称等于另一个工作簿中的工作表名称

来自分类Dev

VBA Excel:在另一个工作簿中查找字符串的功能

来自分类Dev

excel链接到同一工作簿中的另一个工作表

来自分类Dev

尝试在另一个工作簿中的一个工作簿中执行宏时发生错误

来自分类Dev

打开另一个工作簿时进入

来自分类Dev

保存另一个已打开的工作簿

来自分类Dev

双向链接到另一个工作簿

来自分类Dev

从另一个工作簿复制数据

来自分类Dev

将一个工作簿的多个工作表中的单元格复制到另一个工作簿中的多个工作表中

来自分类Dev

从另一个工作簿中打开工作簿,而不触发打开工作簿事件?

来自分类Dev

尝试引用活动工作簿中的另一个工作表

来自分类Dev

在另一个工作簿上运行宏,然后关闭启动该宏的工作簿

来自分类Dev

Excel VBA:对另一个工作簿中的列中的数据进行计数并在主工作簿中输入计数器

来自分类Dev

将数据从一个工作簿复制到另一个工作簿工作表

来自分类Dev

从一个工作簿的工作表复制到另一个工作簿时出错

来自分类Dev

当宏在当前工作簿上时使用另一个工作簿

来自分类Dev

将工作簿名称复制到另一个工作簿中的单元格

来自分类Dev

对工作簿中的单元格求和并粘贴到另一个工作簿中

来自分类Dev

根据另一个工作簿中的单个条件查找一个工作簿中的值的总和

来自分类Dev

将数据从工作簿(在文本框内)放到另一个工作簿(在工作表中)

Related 相关文章

  1. 1

    在另一个工作簿的公式中使用一个工作簿的引用

  2. 2

    将工作表从一个工作簿合并到另一个工作簿时出错

  3. 3

    从另一个工作簿中的另一个工作表在一个工作簿中的一个Excel工作表上执行筛选宏

  4. 4

    删除另一个工作簿中的行

  5. 5

    尝试引用活动工作簿中的另一个工作表

  6. 6

    从另一个工作簿运行宏

  7. 7

    从另一个工作簿更新数据透视表工作簿中的数据

  8. 8

    Openpyxl-将数据从Excel工作簿追加到另一个工作簿

  9. 9

    在另一个工作簿中引用单元格作为工作表的名称

  10. 10

    VBA,对于每个下一个-如果此工作簿中的工作表名称等于另一个工作簿中的工作表名称

  11. 11

    VBA Excel:在另一个工作簿中查找字符串的功能

  12. 12

    excel链接到同一工作簿中的另一个工作表

  13. 13

    尝试在另一个工作簿中的一个工作簿中执行宏时发生错误

  14. 14

    打开另一个工作簿时进入

  15. 15

    保存另一个已打开的工作簿

  16. 16

    双向链接到另一个工作簿

  17. 17

    从另一个工作簿复制数据

  18. 18

    将一个工作簿的多个工作表中的单元格复制到另一个工作簿中的多个工作表中

  19. 19

    从另一个工作簿中打开工作簿,而不触发打开工作簿事件?

  20. 20

    尝试引用活动工作簿中的另一个工作表

  21. 21

    在另一个工作簿上运行宏,然后关闭启动该宏的工作簿

  22. 22

    Excel VBA:对另一个工作簿中的列中的数据进行计数并在主工作簿中输入计数器

  23. 23

    将数据从一个工作簿复制到另一个工作簿工作表

  24. 24

    从一个工作簿的工作表复制到另一个工作簿时出错

  25. 25

    当宏在当前工作簿上时使用另一个工作簿

  26. 26

    将工作簿名称复制到另一个工作簿中的单元格

  27. 27

    对工作簿中的单元格求和并粘贴到另一个工作簿中

  28. 28

    根据另一个工作簿中的单个条件查找一个工作簿中的值的总和

  29. 29

    将数据从工作簿(在文本框内)放到另一个工作簿(在工作表中)

热门标签

归档