扩展范围时,VBA(Excel)更新ActiveRow

时间:2016-10-06 08:35:02

标签: vba excel-vba excel

我在Excel中创建一个宏,将单元格行的编号附加到yyyymmdd格式的日期,以生成带校验和的伪条形码。第一部分使用当前日期乘以10000并添加当前行号:

Log.Write("Log before: " + url);

如果我在单元格中显式调用它并按Enter键,则该函数有效。但是,如果我在单元格A1中调用它然后向下扩展选择(使用单元格底部的黑色十字),它将保留原始行号,因此生成的所有数字都是相同的。

我如何对其进行编码,以便它不使用ActiveCell,而是使用它的实际行号?

1 个答案:

答案 0 :(得分:3)

是的,您需要传递所需的单元格(作为范围)来检查函数的值。

因此,假设你不想将它用于Cell A1,参考Cell A1,你需要输入以下公式:

=CreateBarcode(A1)

然后,您可以将其向下拖动到A列中的其余单元格。

您可以在下面找到已通过Cell引用的已编辑代码:

Public Function CreateBarcode(cellRef As Range) As Double

Dim BCode As Double

BCode = Format(Now(), "yyyymmdd")
BCode = BCode * 10000
BCode = BCode + cellRef.Row

CreateBarcode = BCode

End Function

您可以在下面找到使用工作表结果的屏幕截图(在执行上述更改后):

enter image description here