返回列表 上一主題 發帖

請問解釋這段程式並改寫,感謝!

請問解釋這段程式並改寫,感謝!

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

改如何改寫成第1列第F欄開始向右填寫?
爬文一直沒有下落,想到這裡的老師們都很熱心,萬分感激!

本帖最後由 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)
但是按此作法向右寫,如果右側完成沒有其他資料會出錯。
用功到世界末日那一天∼∼∼

TOP

回復 2# li_hsien

謝謝老師,原來有正確寫法,萬分感激!

TOP

本帖最後由 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題