【问题标题】:Excel Select vs ActivateExcel 选择与激活
【发布时间】:2017-12-20 13:19:26
【问题描述】:

VBA代码wb.Sheets(1).Cells.Selectwb.Sheets(1).Activate有什么区别?

【问题讨论】:

  • 一个简单问题的丰富答案:)

标签: vba excel


【解决方案1】:

select 的区别在于你可以一次选择多个对象。被选中的对象也被放置在可以使用方法的 Selection 对象中。除非您选择多个对象,否则选择(例如,一个单元格)会激活该对象。

激活只是​​简单地使对象成为活动对象。 最好的想法是“可以选择许多单元格,但在任何给定时间只有一个可能是活动单元格。”

注意:它们都有一个共同点——它们很少被需要,而且它们通常不会做任何事情,只会减慢你的代码速度。您可以直接在对象上进行操作,而无需选择或激活它,除非需要,否则最好不要使用它们。

【讨论】:

  • +1 表示“可以选择许多单元格,但在任何给定时间只能选择一个单元格。”
  • 这是一个很好的答案。 Activate 的一个怪癖是它通常选择范围,但并非在所有情况下都选择。如果Activate 用于包含Selection 中第一个单元格的范围,则它实际上不会更改选择。例如,选择范围 A1:B1,然后尝试 ActiveSheet.Range("A1:B2).Activate 并注意选择中没有任何变化。如果您通过单击单元格 B1 并拖动到 A1 来选择范围,那么 B1 是该选择中的活动单元格。如果你仔细看,你会注意到,当你运行上面的代码行时,选择变成了单元格 A1。
  • 需要 Sheet.activate 的一个示例:尝试复制图表时。发现很难...
【解决方案2】:

这是来自MSDN的解释

你的第一个例子wb.Sheets(1).Cells.Select允许你选择多个单元格

第二个wb.Sheets(1).Activate 使工作表处于活动状态。

有很多资源可以帮助您使用 Excel VBA。

http://www.excel-vba.com/index.htm#Tutorial%20on%20Excel%20Macros

http://www.excel-vba-easy.com/

http://www.functionx.com/vbaexcel/

【讨论】:

  • wb.Sheets(1).Activate 使 工作表 处于活动状态:工作表上的活动单元格和选择不会改变,甚至可能没有活动单元格那张纸。
【解决方案3】:

第一个选择工作簿 wb 第一张工作表上的所有单元格。如果工作表未处于活动状态,它将失败。

第二个只是激活工作簿 wb 的第一张表。它不会改变该工作表上的选择或活动单元格,并且在某些情况下可能没有选定的范围或活动单元格(例如,如果工作表上有一个当前被选中的对象)。

【讨论】:

  • "它确实改变了选择" --> "它没有改变选择"。 +1
【解决方案4】:

Select - “选择”单元格

Activate - “激活”一张纸(有点像说专注于一张纸)

有时您需要专门ACTIVATE 表格,以便制作SELECT

【讨论】:

    【解决方案5】:

    我在搜索时发现了这个问题,我也有同样的问题。这是我注意到的一点:

     Sub Transfer(x As Long)
       Dim Rng, ID as Range
       Dim i, j, n As Long
    
     Worksheets(5).Activate
     n = Worksheets(5).Range(Range("I88"), Range("I88").End(xlToRight)).Count
    
    Worksheets(x).Select
     Set Rng = Worksheets(3).UsedRange.Find("Element", LookIn:=xlValues).Offset(1, 1)
     Set ElemID = Range(ElemRng.Offset(0, -1), ElemRng.Offset(0, -1).End(xlDown))
     Set ElemRng = Worksheets(3).Range(ElemRng, ElemRng.End(xlToRight))
    End Sub
    

    我发现我不得不将worksheet.activate(或选择)放入,否则代码会遇到:


    运行时错误:'1004' 应用程序定义或对象定义的错误


    【讨论】:

      【解决方案6】:

      Activate 通常用于 Sheets for Example。 活动表将显示在屏幕上...因此只能有一个活动表

      虽然选择可以用于多个单元格,例如。 Range(A1:B3).Select 将选择多个单元格,而激活是不可能的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-11
        • 2012-09-23
        • 2018-10-24
        • 1970-01-01
        • 1970-01-01
        • 2013-12-27
        • 1970-01-01
        相关资源
        最近更新 更多