因此,我目前正在编写一段代码,将数据块从一个电子表格移动到另一个电子表格。一旦移动,代码就会为该块分配一个数字参考。
此刻,代码转到页面底部并开始工作,直到找到最后写入的行。它读取该引用并将其添加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)。目前,它每次加一。但是,一项工作完成后,整个数据行将通过案例转移到另一张工作表-将其视为一份出色的工作清单。
但是,如果最底行的工作(10058)移到另一张纸上,我们会遇到问题。 在上面提供的代码中放入新的数据集时,将看到最后一行的编号并添加一个。 (这将看到10057并加一,因此再次变为10058)。如何避免这种情况?
答案 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