0

我正在用excel构建一个模板/表单,不同的人在不同的计算机上使用它来填写一些信息,然后通过电子邮件发送给我。

填写模板时,我需要为字段分配一个唯一的 ID 号以及其他信息(有点像请求 ID)。我正在使用生成此唯一 ID

CONCATENATE("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

但我不知道如何将我的连接函数集成到代码中。当我在计算机上打开模板时,我也不太确定这是否会保持我的独特价值不变。

我猜想一种可以限制我在整个工作表中的迭代的方法也会对我有好处。

4

1 回答 1

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
于 2013-05-28T13:23:23.570 回答