我正在excel中构建一个模板/表单,不同的人会在不同的计算机上使用它来填写一些信息,然后通过电子邮件发送给我。
当填充模板时,我需要为字段分配唯一的ID号以及其他信息(类似于请求ID)。我正在使用
生成此唯一IDCONCATENATE("NER-";DEC2HEX(RANDBETWEEN(0;4294967295);8))
这个公式对我有利于手头的任务。
我的挑战是在模板中仅对此公式进行一次评估,然后在我找到文件后打开文件时保持相同。沿着时间戳的线条。我已经研究了一些方法,但我似乎无法让它工作。
我尝试过使用:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("A2:A10"), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = "dd mmm yyyy hh:mm:ss"
.Value = Now
End With
End If
Application.EnableEvents = True
End If
End With
End Sub
但我不知道如何将我的连接函数集成到代码中。当我在计算机上打开模板时,我也不太确定这是否会保持我的独特价值。
我猜想一种限制我在整个工作表中迭代的方法对我来说也很好。
答案 0 :(得分:1)
您可以在用户首次打开工作簿/模板时生成并存储ID,将此代码放在“ThisWorbook
模块中:
Private Sub Workbook_Open()
'ID already set?
If Sheet1.Range("A2").Value <> "" Then Exit Sub
'Prevent that ID is generated on your machine
If Environ$("Username") = "YOURUSERNAME" Then Exit Sub
'Store ID
Sheet1.Range("A2").Value = _
"NER-" & [DEC2HEX(RANDBETWEEN(0,4294967295),8)]
End Sub