2016-05-12 8 views
0

生データワークシートの新しい行エントリとは別のワークシートのフォームにマクロを書き込むことができますか?ここで新しい行エントリ(最後の行)からフォームを移入するマクロ

Macro to populate form from new row entry (last row)

+2

はい、これはVBAで行うことができます。この質問に他に何かありましたか? – CallumDA

+2

([How to Ask](http://stackoverflow.com/help/how-to-ask)をお読みください)。 – BruceWayne

+0

このフォーラムで良い質問をする方法のヒントについては、特にお返事ありがとうございます。特に、これが私の最初だったので。あなたの質問@ CallumDA33に対処するために、はい、私が推測する質問にはさらに多くがあります。あなたはVBAコードを手伝うことができますか? –

答えて

0

コピーが最後FormシートにDataシートからエントリを編集した例です。あなたのVBAプロジェクトでDataワークシートに以下のコードを入れてください:

Data

そしてFormワークシート:

Form

ここ

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

    Static objTargetCells As Object 
    Dim objTargetCell As Range 
    Dim strHeader As Variant 
    Dim objTargetSheet As Worksheet 
    Dim x As Long 

    Set objTargetSheet = Sheets("Form") 

    If objTargetCells Is Nothing Then 
     Set objTargetCells = CreateObject("Scripting.Dictionary") 
     x = 1 
     Do 
      strHeader = Target.Worksheet.Cells(1, x).Value 
      Set objTargetCell = objTargetSheet.Cells.Find(strHeader, , xlValues, xlWhole, xlByRows, xlNext, True, , False) 
      Set objTargetCells(strHeader) = objTargetCell.Offset(0, 1) 
      x = x + 1 
     Loop While Cells(1, x).Value <> "" 
    End If 

    With Target.Worksheet 
     If .Cells(1, Target.Column).Value <> "" And Target.Row <> 1 Then 
      x = 1 
      For Each strHeader In objTargetCells 
       objTargetCells(strHeader).Value = .Cells(Target.Row, x).Value 
       x = x + 1 
      Next 
      objTargetSheet.Cells.EntireColumn.AutoFit 
     End If 
    End With 

End Sub 

Dataワークシートがどのように見えるですコードはすべてで実行されますシート変更イベント。初めてDataシートにテーブルフィールドの辞書を作成し、Formシート上の対応するターゲットセルへの参照を入力します。これらのセルは.Findメソッドで検出されますが、手動で範囲をハードコードすることはできます。