Board logo

標題: 想請教關於定義物件語法的疑問? [打印本頁]

作者: tku0216    時間: 2011-12-1 17:20     標題: 想請教關於定義物件語法的疑問?

我知道用set可以用來定義物件,但我對於下列兩種寫法有點疑惑,還麻煩大大們幫我釐清一下:
以下的寫法是可以新建一個excel工作表,並將目前所有在該工作簿裡的工作表名稱,全部放在新建的工作表裡。

    Set newa = Sheets.Add(Type:=xlWorksheet)
    For i = 1 To Sheets.Count
    newa.Cells(i, 1).Value = Sheets(i).Name
    Next i
   
在這裡,我對set的用法有疑問就是:如果今天把set拿掉,直接把第三行的newa取代掉,這樣的寫法跟把newa定義成物件的概念有何不同?
就是把第三行變成    Sheets.Add(Type:=xlWorksheet).Cells(i, 1).Value = Sheets(i).Name
然後第一行刪除。

請各位大大指教,謝謝。
作者: GBKEE    時間: 2011-12-1 17:59

回復 1# tku0216
Sheets.Add   執行此程式碼後, 作用中的工作表,為此新增的工作表

Sheets.Add(Type:=xlWorksheet)
For i = 1 To Sheets.Count
    Cells(i, 1).Value = Sheets(i).Name  '此Cells 為作用中工作表( 新增的工作表 )的 Cells   
Next i

Set  Sheets.Add(Type:=xlWorksheet).Cells(1, 1).Value = Sheets(1).Name
上式無法加上 Set 定義為物件
作者: tku0216    時間: 2011-12-2 15:49

本帖最後由 tku0216 於 2011-12-2 15:51 編輯

回復 2# GBKEE


    謝謝大大解說,但有點誤解我的意思...
    我的意思是,我可以把第一行set的宣告拿掉,然後直接寫成最後一行嗎?
    也就是:
    Set newa = Sheets.Add(Type:=xlWorksheet)
    For i = 1 To Sheets.Count
    newa.Cells(i, 1).Value = Sheets(i).Name
    Next i

     或是改成:
     For i = 1 To Sheets.Count
     Sheets.Add(Type:=xlWorksheet).Cells(i, 1).Value = Sheets(i).Name
     Next i

     寫法在意義上有何不同?謝謝。
作者: GBKEE    時間: 2011-12-2 17:20

回復 3# tku0216
  1. Set newa = Sheets.Add(Type:=xlWorksheet)   'newa 變數 指定為此新增工作表的物件
  2.     For i = 1 To Sheets.Count
  3.     newa.Cells(i, 1).Value = Sheets(i).Name      'newa.Cells(i, 1).Value ->newa物件的Cells(i, 1)
  4.     Next i
複製代碼
  1.      For i = 1 To Sheets.Count   
  2.      Sheets.Add(Type:=xlWorksheet).Cells(i, 1).Value = Sheets(i).Name   
  3.      '新增工作表的Cells(i, 1).Value = Sheets(i).Name   'Sheets.Count 有多少就新增幾個工作表
  4.      Next i
複製代碼

作者: tku0216    時間: 2011-12-5 15:38

多謝大大分享,所以這樣的寫法我想差就差在工作表會因為迴圈每次增加而增加。

還有附帶一個問題:請問sheets跟worksheets的用法差在哪裡?
我知道workbooks是指該excel檔案的所有工作表,但是在VBA裡,為何有時用sheets,有時卻用worksheets?
例如GBKEE大大分享靠上的程式碼中,第一行跟第三行就用到不同的寫法?
作者: GBKEE    時間: 2011-12-6 13:06

回復 5# tku0216
沒有區別
  1. Sub Ex()
  2.     For i = 1 To Worksheets.Count
  3.         MsgBox Worksheets(i).Name
  4.     Next
  5. End Sub
複製代碼

作者: oobird    時間: 2011-12-6 13:28

若工作簿中包函圖表或4.0巨集工作表,就會有區別。
作者: tku0216    時間: 2011-12-7 13:10

謝謝大大們協助觀念釐清。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)