2016-09-28 166 views
0

我是VBA的新手,我試圖將值從一個單元格複製到多個單元格,當其值發生更改時。複製單元格值到單元格範圍

A2的價值是不斷變化的,當發生這種情況我想該值被複制到單元C2:C21(並最終到單元格D2:D21)

這裏是我想什麼的例子實現:

http://i.stack.imgur.com/xJZyZ.jpg

到目前爲止,我寫了這個代碼:

Sub Worksheet_Change(ByVal Target As Range) 
    For i = 0 To 19 
     If Not Intersect(Target, Range("AS2")) Is Nothing Then 
     Cells(Target.Row + i, 58).Value = Cells(Target.Row, 45).Value 
     End If 
    Next i 
End Sub 

但這只是副本中的一個單一的價值A2到所有單元C2到C22。

有人可以幫我正確寫這段代碼嗎?

+3

在此代碼沒有apperas處理單元格A2,C2也不:C21,也不D2:D21 ... –

回答

1
Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("AS2")) Is Nothing Then 
     For CurCol = 3 to 4 
      For CurRow = 2 to 21 
       If Cells(CurRow, CurCol).Value = "" Then 
        Cells(CurRow, CurCol).Value = Target.Value 
        Exit Sub 
       EndIf 
      Next CurRow 
     Next CurCol 
    End If 
End Sub 
+0

如果這個工程你,請接受一個綠色的複選標記。 – Chrismas007

+1

在任何語句使工作簿/工作表更改之前添加'Application.EnableEvents = False',然後處理錯誤以使'Application.EnableEvents = True'運行始終是'Worksheet_Change'事件處理程序中的良好實踐 – user3598756

0

我想這是你以後:

Option Explicit 

Sub Worksheet_Change(ByVal Target As Range) 
    Dim nVals As Long 

    If Not Intersect(Target, Range("A2")) Is Nothing Then 
     With Range("C2:D21") 
      nVals = WorksheetFunction.CountA(.Cells) 
      If nVals = .Count Then Exit Sub 
      Application.EnableEvents = False 
      On Error GoTo exitsub 
      .Cells(nVals Mod .Rows.Count + 1, IIf(nVals >= .Rows.Count, 2, 1)).Value = Target.Value 
     End With 
    End If 

exitsub: 
Application.EnableEvents = True 
End Sub 
相關問題