Excel / VBA - Userform覆盖现有数据

时间:2017-03-15 19:20:57

标签: excel vba excel-vba userform

我已经为工作人员编写了一份用户表格,用于输入被没收物品的数据,打印出所述表格的副本并保存所有输入的数据。

这种情况在两年内运作良好,但宇宙现在为我提供了一个更大更好的白痴。显然,已从工作表中删除了行,以便有人可以在不留任何记录的情况下将项目返回给某人。

现在 - 输入到表单的任何数据都会覆盖以前的行。每个新输入都会覆盖另一行(较旧)。我使用以下行来查找下一个空行并在工作表上输入数据。它写了5行相同的数据,因为下面的代码现在连续写了5次。

我无法看到错误的位置 - 或者了解如何删除工作表上的Rows会产生效果或更改用户表单上的代码?

' WRITE DATA TO SPREADSHEET    

emptyRow = WorksheetFunction.CountA(Range("F:F")) + 1

RowCount = Worksheets("Sheet1").Range("A2").CurrentRegion.Rows.Count
With Worksheets("Sheet1").Range("A2")
.Offset(emptyRow, 0).Value = Me.txtSurname.Value
.Offset(emptyRow, 1).Value = Me.numCRN.Value
.Offset(emptyRow, 2).Value = Me.cboUnit.Value
.Offset(emptyRow, 3).Value = DateValue(Me.txtDateConf.Value)
.Offset(emptyRow, 4).Value = Me.numBoxnum.Value
.Offset(emptyRow, 5).Value = Me.txtItem6.Value
.Offset(emptyRow, 6).Value = Me.txtItemDesc6.Value
.Offset(emptyRow, 7).Value = Me.numQTY6.Value
.Offset(emptyRow, 8).Value = Me.cboCondition6.Value
.Offset(emptyRow, 9).Value = Me.cboReason6.Value
If Me.chkHistCheck6.Value = True Then
.Offset(emptyRow, 10).Value = "Yes"
Else
.Offset(emptyRow, 10).Value = "No"
End If

If Me.chkHistCheck6.Value = "" Then
    .Offset(emptyRow, 10).Value = "No"
End If

.Offset(emptyRow, 11).Value = Format(Now, "dd/mm/yyyy hh:nn:ss")
End With

1 个答案:

答案 0 :(得分:0)

对不起所有延迟回复。我们已经认为代码虽然很笨重但仍然很好,但是有一些内存问题在起作用。

正在写入的工作表是1400行,有2年的数据输入。发现如果我们只是将所有文件归档(剪切并粘贴)到新文件中,那么表单和工作表将再次完美无缺地运行。

当然,有人在这里看完整个文件,但是分享数据或者晚上整个代码都是禁止的。谢谢你的时间。