0

私は、さまざまなコンピューターのさまざまな人が情報を入力してメールで送信するために使用するテンプレート/フォームを Excel で作成しています。

テンプレートが入力されているとき、他の情報 (リクエスト ID のようなもの) と共に一意の ID 番号をフィールドに割り当てる必要があります。を使用してこの一意の ID を生成しています

CONCATENATE("NER-";DEC2HEX(RANDBETWEEN(0;4294967295);8))

この式は、当面のタスクに役立ちます。

私の課題は、この数式をテンプレートで 1 回だけ評価し、受け取ったファイルを開いたときに同じ値を維持することです。タイムスタンプのようなもの。私はすでにいくつかの方法を調べましたが、それを機能させることができないようです。

私は以下を利用しようとしました:

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 に答える