返回列表 上一主題 發帖

[轉貼] VBA的寫作技巧與增進效能

請教版大
像我的程式想簡化
但裡面有要變的欄位
必須要用 ActiveSheet.Paste
才能動作
請問這樣要如何簡化
我用您的方式
修改我的程式為
    Sheets("北區IC表").Range("B2").Copy Sheets("統計").Range("B2")
    Sheets("統計").Range("E3:E22").Copy Sheets("北一美富").Range("B3")
但原本該變動的"E3:E22"數值就不變動了
請版大幫我看看問題所在
感謝您

我原本的巨集如下

Sub 北一美富()
' 北一美富 Macro
在 2012/7/5 錄製的巨集

    Sheets("北區IC表").Select
    Range("B2").Select
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   

    Sheets("北區IC表").Select
    Range("B3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("D3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("E3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("F3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("G3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub

TOP

引用主文
其實可以這麼寫 --
 Sheets(2).Range("B1") = Sheets(1).Range("A1")
如果內容與格式都要複製,可以這麼寫 --
 Sheets(1).Range("A1").Copy Sheets(2).Range("B1")
Lin

TOP

回復 1# Hsieh


請教版大
像我的程式想簡化
但裡面有要變的欄位
必須要用 ActiveSheet.Paste
才能動作
請問這樣要如何簡化
我用您的方式
修改我的程式為
    Sheets("北區IC表").Range("B2").Copy Sheets("統計").Range("B2")
    Sheets("統計").Range("E3:E22").Copy Sheets("北一美富").Range("B3")
但原本該變動的"E3:E22"數值就不變動了
請版大幫我看看問題所在
感謝您

我原本的巨集如下

Sub 北一美富()
' 北一美富 Macro
在 2012/7/5 錄製的巨集

    Sheets("北區IC表").Select
    Range("B2").Select
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   

    Sheets("北區IC表").Select
    Range("B3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("D3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("E3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("F3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("北區IC表").Select
    Range("B7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("統計").Select
    Range("B2").Select
    ActiveSheet.Paste
    Range("E3:E22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("北一美富").Select
    Range("G3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub

TOP

很棒的內容
要好好學習一下

TOP

感謝分享 感謝分享
Good

TOP

exapmle.rar (117.34 KB) 回復 1# Hsieh


     超級版主您好

有一點問題想跟您請教

我想用您這篇題到的 " 在不同sheet間複製貼上" 的技巧 來對照兩個不同sheets之間的公司的名稱  如果相符  就將該公司2005年的return複製貼上到sheet1

不知道為何沒辦法使用 ( 總是只有三個名字有抓到資料)

附上我的檔案 請您過目

謝謝

TOP

謝謝教學.值得加以思考一下.

TOP

感謝版主分享

讓我受益匪淺

TOP

多謝分享
我才剛進到VBA的世界
真的都是透過巨集學習

雖然看了似懂非懂  但是我會時時放在心上的...

TOP

小弟我是新手,因為需要時才會寫一下VBA,所以技巧還不純熟,在此想請教一下各位前輩。

  最後兩行"釋放物件變數"是甚麼意思? 都是在寫在sub的最後嗎? 因為執行迴圈或其他動作時記憶下來的那些資料暫存要讓它消失嗎?! 可是當執行完一輪後都已經輸出到指定的地方了欸。

                                                                                                                                                           感謝前輩指導
初新者~指教囉~

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題