【发布时间】:2011-08-11 19:00:37
【问题描述】:
我有一个 excel 文件,每一行都有一个订单,我希望每个订单都有一个唯一的标识符,所以会有一个唯一 ID 列。每次我填写一行时,我都希望 Excel 自动为我填充唯一 ID 列。我做了一些研究,并指出了 GUID 的方向。我找到了以下代码:
Function GenGuid() As String
Dim TypeLib As Object
Dim Guid As String
Set TypeLib = CreateObject("Scriptlet.TypeLib")
Guid = TypeLib.Guid
' format is {24DD18D4-C902-497F-A64B-28B2FA741661}
Guid = Replace(Guid, "{", "")
Guid = Replace(Guid, "}", "")
Guid = Replace(Guid, "-", "")
GenGuid = Guid
End Function
但我不确定如何实现它。任何帮助将不胜感激。提前谢谢你。
【问题讨论】:
-
我不认为您的问题是生成 GUID。你有工作代码。您甚至可以通过为它分配公式
=GenGuid()将 GUID 放入任何单元格,尽管它会在每次计算公式时发生变化。您的问题应该是:如何让 Excel 使用 VBA 函数的结果自动填充单元格? -
警告:以上代码会在字符串末尾添加随机垃圾:stackoverflow.com/questions/19556268/…
-
不要将此函数作为公式
=GenGuid()放入单元格中 - 这将在每次工作表重新计算时为每一行生成所有新的 GUID!相反,使用 Worksheet 事件来查找对工作表的更改,在其中您需要设计一种方法来确定是否正在编辑新/空白行(“此行上的 GUID 列是否为空白?”),以及是否然后您需要将单元格值设置为生成的 GUID(使其保持静态)。这是确保在为行分配 GUID 后它永远保持相同值的最佳方式。