如何通过使用变量将一栏中的数字增加一?

时间:2019-05-07 10:03:34

标签: excel vba

因此,我目前正在编写一段代码,将数据块从一个电子表格移动到另一个电子表格。一旦移动,代码就会为该块分配一个数字参考。

此刻,代码转到页面底部并开始工作,直到找到最后写入的行。它读取该引用并将其添加1。

我认为这可以解决问题,但实际上是另外一个问题。

现在,这意味着如果最后一行被删除或发布到另一张纸上,则代码将创建该引用的副本。

例如,如果我有一个包含45行的工作表,则引用中的行数从10001到10045,然后我将10045行移动到了另一工作表。下次运行代码时,我将得到第二个10045。

是否有什么方法可以使此代码成为一个变量,而无论删除了哪些数字,变量都保持不变?

在下面查看我一直在使用的代码。

BlankRow = Range("B1000").End(xlUp).Row + 1
Cells(BlankRow, 2).Select
ActiveCell.Value = Selection.Offset(-1, 0) + 1

编辑:使其更清楚。数据移动到同一工作簿中的另一个电子表格。我没有完全转移到另一本工作簿中

信息是从另一个电子表格中提取的,该电子表格是表单的基本模型。按下一个按钮,它的格式在这里。

这是参考文献出现的地方(B)。目前,它每次加一。但是,一项工作完成后,整个数据行将通过案例转移到另一张工作表-将其视为一份出色的工作清单。 enter image description here

但是,如果最底行的工作(10058)移到另一张纸上,我们会遇到问题。 在上面提供的代码中放入新的数据集时,将看到最后一行的编号并添加一个。 (这将看到10057并加一,因此再次变为10058)。如何避免这种情况?

2 个答案:

答案 0 :(得分:2)

如果需要该值保持不变(在关闭并重新打开文件之后),则需要保存并增加该值在单元格中的任何位置(关闭文件后变量值将重置为0)。

最佳做法是使用隐藏工作表保存该值。

例如,添加一个名为"Config"的工作表,将其隐藏并使用以下代码:

'increase value in config
ThisWorkbook.Worksheets("Config").Range("A1").Value = ThisWorkbook.Worksheets("Config").Range("A1").Value + 1
'use the config value in your sheet
With ThisWorkbook.Worksheets("YourActualSheet")
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1) = ThisWorkbook.Worksheets("Config").Range("A1").Value
End With

因此,无论您是从实际工作表中删除还是移动了该值,上次使用的值始终位于Worksheets("Config").Range("A1")中,这将在下次运行代码时增加保存在Worksheets("Config").Range("A1")中的值。

答案 1 :(得分:0)

您的代码可以在此恢复:

With ThisWorkbook.Sheets("NameOfTheSheet")
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1) = .Cells(.Rows.Count, 2).End(xlUp) + 1
End With

此外,您还应该搜索如何引用工作簿/工作表,并使用引用来避免问题和使用.Select .Activate