這是我的版本,使用Worksheet Event
。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim entry As Range, count As Range, dest As Range
Dim i As Integer, j As Integer
Dim query As Integer
On Error Goto errhandler
Application.EnableEvents = False
Set entry = ThisWorkbook.Sheets("DataEntry").Range("C4")
Set count = ThisWorkbook.Sheets("DataEntry").Range("E4")
Set dest = ThisWorkbook.Sheets("DataSheet").Range("A" & _
Rows.count).End(xlUp).Offset(1, 0)
If Not Intersect(Target, count) Is Nothing Then
query = MsgBox("Copy Data?", vbYesNo)
If query = 7 Then Exit Sub
i = Target.Value
For j = 1 To i
Target.Offset(0, -2).Copy dest
With dest.Offset(0, 1)
.Value = Date
.NumberFormat = "dd-mmm-yy"
End With
Set dest = ThisWorkbook.Sheets(2).Range("A" & _
Rows.count).End(xlUp).Offset(1, 0)
Next
End If
continue:
Application.EnableEvents = True
Exit Sub
errhandler:
MsgBox Err.Description
Resume continue
End Sub
希望這會有所幫助。
每當您更改E4
數據贏取值C4
將被複制到您的DataSheet
。
Sheet
中的代碼,而不是Module
中的代碼。
來源
2014-01-15 06:39:02
L42
'01-Jan014' - 應該是'01-Jan-14'嗎?另外,你有沒有試過錄制一個宏,看看它是如何工作的? – Manhattan
嘗試錄製宏但宏無法顯示根據定義的數量粘貼項目的循環。即基於C4中的給定數字粘貼值N次。 – user3196669
如果「數據表」中已經有數據,您是希望它被替換還是隻將新數據追加到下一個空行? – Manhattan