2017年1月1日 星期日

VBA中Activate方法和Select方法的區別




     VBA中的Activate方法和Select方法看起來似乎相同,其實二者是有區別的。Activate方法的作用是啟動,而Select方法的作用是選擇。其區別如下:


    1.對於“Sheets”對象
    Sheets.Select可以同時選擇多個工作表,而Sheets.Active不能同時啟動多個工作表。如下麵的語句:
    Sub Test1()
       ActiveWorkbook.Sheets(Array(1, 2, 3)).Select '可以同時選擇3個工作表
    End Sub
    Sub Test2()
       ActiveWorkbook.Sheets(Array(1, 2, 3)).Activate  '不能同時啟動3個工作表,出現錯誤
    End Sub
    另外,對於隱藏的工作表,Sheets.Select方法不能選擇隱藏的工作表,而Sheets.Activate方法可以啟動隱藏的工作表。如下面的代碼:
    Sub Test3()
       ActiveWorkbook.Sheets(2).Visible = False '隱藏工作表
       ActiveWorkbook.Sheets(2).Select          '無法選擇隱藏的工作表,產生錯誤
    End Sub
    Sub Test4()
       ActiveWorkbook.Sheets(2).Visible = False  '隱藏工作表
       ActiveWorkbook.Sheets(2).Activate         '可以啟動隱藏的工作表
    End Sub
    2.對於“Range”對象
    首先說明一下作用儲存格和選定區域:
    某個選定的區域中只能有一個作用儲存格,通常作用儲存格位於所選區域的左上角。如下圖我們選擇了A1:G10區域,A1儲存格是高亮顯示的,A1儲存格就是作用儲存格。當我們用鍵盤進行輸入的時候,鍵入的內容將被輸入到作用儲存格中。
    

    如果我們要讓區域中的其他儲存格變成作用儲存格,可以按Tab鍵,將使區域中當前作用儲存格右方的儲存格變為作用儲存格,而按Shift+Tab則方向相反;或按Enter鍵,將使區域中當前作用儲存格下方的儲存格變為作用儲存格,而按Shift+Enter則方向相反。
  Range”物件的的Select方法可以選擇一個或多個儲存格,而Activate方法可以指定某一個儲存格為作用儲存格。 如果我們用下面的代碼試圖啟動某個區域:
    Range("d4:e5").Activate
    Excel將僅僅啟動D4儲存格,但同時選擇了D4:E5區域。下面的代碼首先選擇A1:E10區域,同時啟動D4儲存格:
    Sub test()
       Range("a1:e10").Select
       Range("d4:e5").Activate
    End Sub
    而對於下面的代碼:
    Sub test()
       Range("a1:e10").Select
       Range("f11:g15").Activate
    End Sub
    由於區域A1:E10F11:G15沒有公共區域,將最終選擇F11:G15,並啟動F11儲存格。
    由上可見,當我們要選擇某個區域時最好用Select方法,而不用Activate方法,否則可能會出現意想不到的錯誤。

來源:http://www.excel123.cn/Article/excelvba/200902/217.html


沒有留言:

張貼留言