Board logo

標題: 請問解釋這段程式並改寫,感謝! [打印本頁]

作者: av8d    時間: 2017-7-19 21:56     標題: 請問解釋這段程式並改寫,感謝!

Sheets("工作表").Cells(Rows.Count, "A").End(3)(2, 1).Resize(1, 1) = Array(Date)
請問以上的各個單字的意思為何?

改如何改寫成第1列第F欄開始向右填寫?
爬文一直沒有下落,想到這裡的老師們都很熱心,萬分感激!
作者: li_hsien    時間: 2017-7-20 14:14

本帖最後由 li_hsien 於 2017-7-20 14:18 編輯

回復 1# av8d

我也是第一次看到這種寫法
Sheets("工作表").Cells(Rows.Count, "A").End(3)(2, 1).Resize(1, 1) = Array(Date)

小弟一步步測試
改成下面這樣可能會比較好懂
Sheets("工作表").Cells(65536,"A").End(xlup).Offset(1,0).Resize(1,1)=Array(Date)

Rows.Count=65536 -> 總欄數
End(3)=End(xlup) -> 有下往上 指到有資料的儲存格
Sheets("工作表").Cells(Rows.Count, "A").End(3)(2, 1) = Sheets("工作表").Cells(65536,"A").End(xlup).Offset(1,0) ->可以查看看Offset的用法
Resize(1, 1) -> 儲存格位置沒有變化,設定(1,1)這應該沒有什麼作用,可以改成其他數字觀察看看 e.g. Resize(2,3)
Array(Date) -> 就是把最後Resize的位置全都填入日期


建議您可以分段用.select觀察目前儲存格的位置
可以比較了解運作過程


至於"改寫成第1列第F欄開始向右填寫?"
是像下方這樣嗎?
Sheets("工作表").Cells(Rows.Count, "F").End(2)(2, 1).Resize(1, 1) = Array(Date)
Sheets("工作表").Cells(1,"F").End(xlToRight).Offset(1,0).Resize(1,1)=Array(Date)
但是按此作法向右寫,如果右側完成沒有其他資料會出錯。
作者: av8d    時間: 2017-7-20 15:30

回復 2# li_hsien

謝謝老師,原來有正確寫法,萬分感激!
作者: GBKEE    時間: 2017-7-21 15:55

本帖最後由 GBKEE 於 2017-7-22 04:47 編輯

回復 3# av8d
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range
  4.     Set Rng = [D15]
  5.     MsgBox Rng(1, 1).Address
  6.     MsgBox Rng.Cells(1, 1).Address
  7.     MsgBox Rng.Range("a1").Address
  8.     MsgBox Rng.Offset(0).Address
  9. End Sub
複製代碼





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