如何将数据从一个Excel界面(表1)存储和更新到另一个表(表2)以跟踪交易历史logging?

我在项目中遇到了一个问题。 我想将工作表(工作表1)的input数据存储到另一工作表(工作表2),以保存我的交易logging。 重要的是,在Sheet1中的每个input之后,它应该返回到空白单元格(Sheet1),以便可以在该特定单元格(Sheet1)中再次完成一个新条目。 在这个过程中,我想定期将这些值存储到Sheet2中,以便跟踪历史logging。 我已经在VBA上尝试了以下,但它不起作用。

Sub Master_Sheet_Record() If Sheet1.Range("D1") = "" Then MsgBox "OK" Else Sheet1.Range("D1").Copy Sheet2.Range("B2").PasteSpecial xlPasteValues End If End Sub 

我已经写在一个模块。 粗体的代码行应该是这样的,在每次B2变为B3之后,它就可以存储Sheet1的下一个input。

请尽可能回复邮件并引导我。

如果你想要一个历史 ,那么你需要一个事件macros。

放置在Sheet1代码区域以下:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, r2 As Range Set r = Range("A1") If Intersect(r, Target) Is Nothing Then Exit Sub Application.EnableEvents = False If Sheets("Sheet2").Range("A1").Value = "" Then r.Copy Sheets("Sheet2").Range("A1") Else N = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1 r.Copy Sheets("Sheet2").Cells(N, 1) End If r.Clear r.Select Application.EnableEvents = True End Sub 

每次在Sheet 1单元格A1中input一个值时,该值被复制到Sheet 2A中的历史值列表的底部。 Sheet1单元格A1被清除并重新select。

因为它是工作表代码,所以安装和自动使用非常简单:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. select查看代码 – 这会popup一个VBE窗口
  3. 粘贴东西,closuresVBE窗口

如果您有任何疑问,请先在试用工作表上尝试。

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 调出上面的VBE窗口
  2. 清除代码
  3. closuresVBE窗口

要了解有关事件macros(工作表代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm