Excel Select vs Activate

后端 未结 6 1749
轻奢々
轻奢々 2020-12-01 10:39

What is the difference between the VBA code wb.Sheets(1).Cells.Select and wb.Sheets(1).Activate?

相关标签:
6条回答
  • 2020-12-01 11:10

    Activate is often used for Sheets for Example. The Active sheet wil be shown on the screen... therfore there can only be one active sheet

    Select though is can be used for multiple Cells for Example. Range(A1:B3).Select will select multiple cell which is'nt possible with activate

    0 讨论(0)
  • 2020-12-01 11:16

    Difference between select is that you can select several objects at once. Objects that are selected are also placed in the Selection object which you can use methods on. Unless you are selecting multiple objects, selecting (say, a cell) activates the object.

    Activate just simply makes the object the active object. Best way to think of it is "many cells can be selected, but only one may be the active cell at any given time."

    Note: They both have one thing in common - they are rarely ever needed and they do generally don't do anything but slow your code down. You can work directly on an object without selecting or activating it and it's best practice not to use these unless needed.

    0 讨论(0)
  • 2020-12-01 11:20

    Select - "Selects" Cell(s)

    Activate - "Activates" a sheet (kind of like saying to focus on a sheet)

    Sometimes u need to specifically ACTIVATE the sheet, in order to make a SELECT

    0 讨论(0)
  • 2020-12-01 11:22

    The first selects all cells on the first sheet of the workbook wb. It will fail if the sheet is not active.

    The second just activates the first sheet of the workbook wb. It does not alter the selection or activecell on that sheet, and in some cases there may be no selected range or activecell (eg. if there's an object on the sheet which is currently selected).

    0 讨论(0)
  • 2020-12-01 11:27

    Here is an explanation from MSDN

    You first example wb.Sheets(1).Cells.Select allows you to select multiple cells

    The second wb.Sheets(1).Activate makes the sheet active.

    There are lots of resources out there to help with Excel VBA.

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

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

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

    0 讨论(0)
  • 2020-12-01 11:29

    I found this question while searching, I had the same question. Here is something I noticed:

     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
    

    I found that I HAD to put the worksheet.activate (or select) in or the code would run into:


    Run-time error: '1004' Application-defined or object-defined error


    0 讨论(0)
提交回复
热议问题