2016-09-28 17 views
0

VBAが新しく、値が変更されたときに1つのセルから複数のセルに値をコピーしようとしています。セルの範囲にセルの値をコピー

A2の値は絶えず変化しており、それが起こるとき、私はその値がセルC2にコピーすることにしたい。(最終的には細胞D2に当時と:D21)C21

ここでは、私が希望するものの一例です達成するために:

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 

が、これだけのコピーの1つの値:

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

をこれまでのところ、私はこのコードを書きましたA2を全てのセルC2〜C22に割り当てる。

誰でもこのコードを正しく書くのを手伝ってもらえますか?

+3

何もセルA2、またC2処理するためにapperasない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

私は、これはあなたが後にしているものだと思い:C21、またD2:このコードで

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 
関連する問題