【问题标题】:VBA: Set Workbook, and Activate Workbook ErrorVBA:设置工作簿,并激活工作簿错误
【发布时间】:2019-03-03 23:03:04
【问题描述】:

有一个简单的任务我想不通。我想复制 wb1.ws1 的值并粘贴到 wb2.ws2

这是我尝试过的。

Dim wb1 as Workbook, wb2 as Workbook
Dim ws1 as Worksheet, ws2 as Worksheet

'Open wb1 and ws1 and set
Set wb1 = Workbooks.Open("R:\Workbook1.xlsx")
Set ws1 = Sheet("Sheet1")

'Open wb2 and ws2 and set
Set wb2 = Workbooks.Open("R:\Workbook2.xlsx")
Set ws2 = Sheet("Sheet2")

'Copy Value of wb1.ws1 and paste into wb2.ws2
wb1.ws1.Range("A1").Copy wb2.ws2.Range("A1")

为什么这不起作用?似乎我无法通过指定 wb1.ws1.Range(XYZ) 来选择范围

它迫使我将线条分成

wb1.Activate
ws1.Select
Range("A1").Copy
wb2.Activate
ws2.Select
Range("A1").Paste

看起来效率非常低,但我不知道如何消除激活选择的噩梦

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    一旦您设置了工作表,工作簿的父级就已经定义好了。所以在Set声明父母

    Dim wb1 as Workbook, wb2 as Workbook
    Dim ws1 as Worksheet, ws2 as Worksheet
    
    'Open wb1 and ws1 and set
    Set wb1 = Workbooks.Open("R:\Workbook1.xlsx")
    Set ws1 = wb1.WorkSheets("Sheet1")
    
    'Open wb2 and ws2 and set
    Set wb2 = Workbooks.Open("R:\Workbook2.xlsx")
    Set ws2 = wb2.Worksheets("Sheet2")
    
    'Copy Value of wb1.ws1 and paste into wb2.ws2
    ws1.Range("A1").Copy ws2.Range("A1")
    

    【讨论】:

    • 谢谢。我试过这个,它似乎不起作用。它在“Set ws1 = wb1.WorkSheets("Sheet1")”或“Set ws2 = wb2.Worksheets("Sheet2")”上给了我“下标超出范围”
    • 那么此工作簿中没有包含这些名称的工作表。
    猜你喜欢
    • 2017-01-16
    • 2023-04-05
    • 2017-09-16
    • 2014-07-02
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多