可以把第一段改成: Private Sub Worksheet_Change(ByVal Target As Range) '把数据写入现金支票 If Target.Address = "C$4$" Or Target.Address = "D$4$" Then If Target.Value <> "" Then Sheet1.[D12].Value = Sheet5.[D4].Value Sheet1.[D13].Value = Sheet5.[C4].Value & "拆迁差价款" End If End If End Sub 其实不用这么麻烦,直接把: Sheet1.[D12].Value = Sheet5.[D4].Value Sheet1.[D13].Value = Sheet5.[C4].Value & "拆迁差价款" 写在下面的代码里就行了。 Private Sub CommandButton1_Click() '开始记录数据 ax = 3 aaxx = 1 Do While Not (IsEmpty(Sheets("差价款打印记录").Cells(ax, 2).Value)) ax = ax + 1 aaxx = aaxx + 1 Loop '执行以上4行程序,确定"差价款打印记录"工作表第3行从第2列起到第一个空行的行数ax. Sheets("差价款打印记录").Cells(ax, 1) = aaxx Sheets("差价款打印记录").Cells(ax, 2) = (Sheets("房屋拆迁差价款").Cells(1, 9) & "-" & Sheets("房屋拆迁差价款").Cells(1, 10) & "-" & Sheets("房屋拆迁差价款").Cells(1, 11)) '将表外房屋拆迁差价款坐标为(行2,列3)单元格内容转入明细表坐标为(ax, 2) 的单元格,以下按顺序相同 Sheets("差价款打印记录").Cells(ax, 3) = Sheets("房屋拆迁差价款").Cells(4, 1) Sheets("差价款打印记录").Cells(ax, 4) = Sheets("房屋拆迁差价款").Cells(4, 3) Sheets("差价款打印记录").Cells(ax, 5) = Sheets("房屋拆迁差价款").Cells(4, 4) Sheets("差价款打印记录").Cells(ax, 6) = Sheets("房屋拆迁差价款").Cells(2, 6) Sheets("差价款打印记录").Cells(ax, 7) = Sheets("房屋拆迁差价款").Cells(4, 8) Sheets("差价款打印记录").Cells(ax, 8) = Sheets("房屋拆迁差价款").Cells(2, 1) Sheets("差价款打印记录").Cells(ax, 9) = Sheets("房屋拆迁差价款").Cells(4, 2) '记录数据结束 '打印 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheet1.[D12].Value = Sheet5.[D4].Value Sheet1.[D13].Value = Sheet5.[C4].Value & "拆迁差价款" ' 删除 Range("A2:C2").Select Selection.ClearContents Range("F2:H2").Select Selection.ClearContents Range("A4:F4").Select Selection.ClearContents Range("H4:H4").Select Selection.ClearContents '保存数据结束 ActiveWorkbook.Save End Sub |