2016-05-12 92 views
0

是否可以写入一个宏,以便在原始数据工作表的新行条目上填充不同工作表上的表单?用于从新行条目填充表单的最后一行(最后一行)

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

+2

是的,它可以用VBA完成。这个问题还有别的吗? – CallumDA

+2

(请阅读[如何问](http://stackoverflow.com/help/how-to-ask))。 – BruceWayne

+0

谢谢你们的回复,特别是如何在这个论坛上提出一个好问题的提示。特别是,因为这是我的第一个。为了解决你的问题@ CallumDA33,是的,我猜的问题还有更多。你能帮助VBA代码吗? –

回答

0

下面是拷贝最后编辑从Data片进入Form片的例子。把下面的代码到Data工作表中您的VBA项目:

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工作表:

Form

的代码每运行Data表单更改事件。第一次在Data图纸上创建表格字段字典时,将其填入Form图纸上相应目标单元格的引用。这些单元格可通过.Find方法找到,但您可以手动使用您的范围硬编码。

相关问题