- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
本帖最後由 luhpro 於 2011-10-31 22:33 編輯
如果我復製儲存格後,只想貼上部份格式,目前程式如下, 請問這可以在簡化嗎?
Sheet9.Rows(1).Copy
Sheet1.Rows(1).PasteSpecial Paste:=xlPasteFormats
Sheet9.Rows(1).Copy
Sheet1.Rows(1).PasteSpecial Paste:=xlPasteValidation
wind6424 發表於 2011-10-19 15:01 
1. 當重複參照同一標的物時
可善用 With ... End With
2. 當 Copy 後若貼上後馬上又要貼上的話,
無須再次 Copy
3. Sheet1 是保留字不能直接拿來引用,
會發生錯誤
Set Sh9R = Sheets("Sheet9").Rows(1)
Set Sh1R = Sheets("Sheet1").Rows(1)
Sh9R.Copy
With Sh1R
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValidation
End With
後記修正 :
後來經過測試發現問題點應該不在 Sheet1 (即其並非保留字),
它應是代表 Sheets(1).
而 Sheet9 發生問題的原因是 我測試時所新建的 Excel 檔其預設值都只會開到 Sheets(3),
故而用 Sheet9 會發生錯誤.
然而因為 Sheet Name 並不會與 Sheet No. 完全相對應,
所以該 Sheet1 到底是不是 Sheet(1) 沒進 VBA 一般是看不出來的,
所以還是建議使用 Sheets("Sheet1") 形式再搭配 With 來簡化程式,
這是個人的寫程式習慣僅供參考. |
|