2013-03-20 194 views
1

我知道有一種方法可以使代碼簡潔快捷,但似乎我太過於簡單的實現它了。我有一些合併的單元格(它是一種表格,它應該是「標準」的,但用戶不斷地搞亂它,我使用的宏將會產生大量的錯誤,並且不會收集信息)。到目前爲止,我設法做的另一段代碼再次打開「標準」表單,並填寫用戶表單中的所有數據。如何簡化vba複製粘貼單獨的單元格值

它的作用就像一個魅力,但現在我厭倦了看和問,因爲我無法弄清楚如何簡化它(我知道它一定是愚蠢的,但我不能接受它不能被完成 - 我也不能接受「全功能」的VBA必須花費很長時間才能爲這麼小的代碼編寫這麼多的代碼)。

Application.ScreenUpdating = False 
ActiveWindow.ActivatePrevious 
Workbooks.Open Filename:="...\Standard Formular.xls" 
Sheets("Formulaire - Form").Select 
ActiveWindow.ActivateNext 
Range("E9").Copy 
ActiveWindow.ActivatePrevious 
Range("E9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E11").Copy 
ActiveWindow.ActivatePrevious 
Range("E11").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E13").Copy 
ActiveWindow.ActivatePrevious 
Range("E13").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E15").Copy 
ActiveWindow.ActivatePrevious 
Range("E15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E17").Copy 
ActiveWindow.ActivatePrevious 
Range("E17").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E19").Copy 
ActiveWindow.ActivatePrevious 
Range("E19").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Range("E21").Select 
ActiveCell.FormulaR1C1 = Date 
ActiveWindow.ActivateNext 
Range("E28").Copy 
ActiveWindow.ActivatePrevious 
Range("E28").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E30").Copy 
ActiveWindow.ActivatePrevious 
Range("E30").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E32").Copy 
ActiveWindow.ActivatePrevious 
Range("E32").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E34").Copy 
ActiveWindow.ActivatePrevious 
Range("E34").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E36").Copy 
ActiveWindow.ActivatePrevious 
Range("E36").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E38").Copy 
ActiveWindow.ActivatePrevious 
Range("E38").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E48").Copy 
ActiveWindow.ActivatePrevious 
Range("E48").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E50").Copy 
ActiveWindow.ActivatePrevious 
Range("E50").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E52").Copy 
ActiveWindow.ActivatePrevious 
Range("E52").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E54").Copy 
ActiveWindow.ActivatePrevious 
Range("E54").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E63").Copy 
ActiveWindow.ActivatePrevious 
Range("E63").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("G63").Copy 
ActiveWindow.ActivatePrevious 
Range("G63").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("C65").Copy 
ActiveWindow.ActivatePrevious 
Range("C65").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("D65").Copy 
ActiveWindow.ActivatePrevious 
Range("D65").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E65").Copy 
ActiveWindow.ActivatePrevious 
Range("E65").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("F65").Copy 
ActiveWindow.ActivatePrevious 
Range("F65").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("G65").Copy 
ActiveWindow.ActivatePrevious 
Range("G65").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E67").Copy 
ActiveWindow.ActivatePrevious 
Range("E67").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("A72").Copy 
ActiveWindow.ActivatePrevious 
Range("A72").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("G72").Copy 
ActiveWindow.ActivatePrevious 
Range("G72").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Range("E97").Copy 
ActiveWindow.ActivatePrevious 
Range("E97").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
ActiveWindow.Close 
Application.ScreenUpdating = True 

預先感謝您抽出寶貴時間幫助我!

回答

0

商店要複製並從變量表:

wsU = Sheets("Sheet name on user form goes here") 
Workbooks.Open Filename:="...\Standard Formular.xls" 
wsF = Sheets("Formulaire - Form") 

現在代替鄰˚F倒裝假摔這片之間被激活,而不是使用複製和粘貼,因爲這涉及到剪貼板,並可以胡來,當你開始嘗試,而這個宏運行試試這個在其他應用程序中複製和粘貼:

wsF.Range("E9").value = wsU.Range("E9").value 

BTW一個不錯的簡寫,這是

wsF.[E9] = wsU.[E9] 
+0

很大,許多感謝...的話是不夠的! – 2013-03-20 10:27:54

+0

沒問題,歡迎來到SO。如果這解決了問題,請將其標記爲正確(答案左上方的勾號),如果您認爲通過點擊左上方的向上指示的三角形表示您的答案是正確的,則可以提出答案。 – Dan 2013-03-20 10:31:40

+0

這個解決方案非常簡單,易於遵循 - 我只是把它放入我的宏,它只是流動! – 2013-03-20 10:37:54

0

做一個

`sheet("Where i want to paste").range("xxx").value=sheet("Data im copiing").range("yyy").value` 

例如,你的第一個副本將是:

表( 「不知道名字」)的範圍( 「E9」)值=表(「Formulaire - 。表「)範圍(」 E9" )值

相關問題