2013-06-05 51 views
0

我写了一个简单的宏来复制并粘贴两行相邻的一列,然后我添加了app.ontime来自动运行复制&粘贴宏。我想要将我的宏应用于多行数据。有什么想法吗?VBA复制并粘贴多行的相邻列

Public Sub PasteDynamicData() 

'runs TestKDdata every Xmin 

Sheets("MOVINGAVGDATAFromKD").Range("C4").Copy 

Range("J4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 
Application.CutCopyMode = False 

Sheets("MOVINGAVGDATAFromKD").Range("I4:j4").Insert _ 
shift:=xlDown 

Sheets("MOVINGAVGDATAFromKD").Range("D4").Copy 

Range("m4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 

Sheets("MOVINGAVGDATAFromKD").Range("L4:M4").Insert _ 
shift:=xlDown 

Sheets("MOVINGAVGDATAFromKD").Range("i87:m87").ClearContents 
End Sub 

Public Sub UpdateDataClock() 
'Clock that prompts running of PasteDynamicData 
Sheets("MOVINGAVGDATAFromKD").Select 
Call PasteDynamicData 
Nexttick = Now + TimeValue("00:00:30") 
Application.OnTime Nexttick, "updatedataclock" 

     If Time >= TimeValue("16:00:00") Then 
     Application.OnTime Nexttick, "updatedataclock", , False 
End If 
End Sub 


(I declared "nexttick as date" in the module). 

回答

0

你能否解释究竟是什么问题?你想要固定或改进什么?有什么不工作?

无论如何,请尝试以下操作:

Public Sub PasteDynamicData() 

Dim xlMovingSheet As Worksheet 
Set xlMovingSheet = ActiveWorkbook.Worksheets("MOVINGAVGDATAFromKD") 

xlMovingSheet.Range("C4").Copy 

xlMovingSheet.Range("J4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 
Application.CutCopyMode = False 

xlMovingSheet.Range("I4:j4").Insert _ 
shift:=xlDown 

xlMovingSheet.Range("D4").Copy 

xlMovingSheet.Range("m4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 

xlMovingSheet.Range("L4:M4").Insert _ 
shift:=xlDown 

xlMovingSheet.Range("i87:m87").ClearContents 

Call UpdateDataClock 
End Sub 

对于更新部分,设置自己喜欢的任意时间增量。现在它被设置为每30秒运行一次PasteDynamicData。

Public Sub UpdateDataClock() 

Application.OnTime Now() + TimeValue("00:00:30"), "PasteDynamicData" 

If Time >= TimeValue("16:00:00") Then 
    Application.OnTime EarliestTime:=Now() + TimeValue("00:00:30"), Procedure:="PasteDynamicData", Schedule:=False 
End If 

End Sub 
+0

嘿Rwisch45我是一个新手Vba'r所以我写了代码在步骤。当我开始编写代码时,我只将它应用于一组数据,现在我处于宏的最后一步;试图扩展代码以应用于20+行(数据点)的可变大小范围。 – Elliot