Я делаю шаблон электронной таблицы, который требует использования для цифровой подписи определенных полей по мере их заполнения. Методом этого является двойной щелчок по указанному полю, VBA вводит имя пользователя своего приложения, и, если для этой подписи есть связанный блок даты (не все подписи должны быть датированы), он вставит его в соответствующее поле.
Поскольку этот шаблон будет реплицироваться с местоположением сигнатур, каждый раз слегка меняющимся, я не хотел, чтобы сигнатуры были жестко запрограммированы в VBA, а вместо этого возвращал их из набора значений на листе.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer, counter As Integer, g As Integer
Dim location As String, dated As String
i = Range("W2").Value
If Not Application.Intersect(Target, Range("A1:L50")) Is Nothing Then
Cancel = True
For counter = 1 To i
g = (counter + 3)
location = Range("V" & g).Value
dated = Range("W" & g).Value
If Target.Address = ("V" & g) Then
MsgBox Target.Cells(1).Address
If MsgBox("You are about to sign this document as " & Application.UserName & "." & _
" Please ensure all information is correct. Once signed the document cannot be edited.", vbOKCancel) = vbCancel Then
Exit Sub
Else
Range(location).Value = Application.UserName
If Not Range("W" & g).Value = "No" Then
Range(dated).Value = Now
Else:End If
End If
End If
Next counter
End If
End Sub
если я закомментирую для l oop и
If Target.Address = ("V" & g) Then
и введу g в качестве жесткого числа, код будет выполняться и заполнять любую строку подписи и даты, соответствующую до этого значения г. Я пытался использовать для l oop, чтобы изменение значения g основывалось на двойном щелчке по ячейке, но с полным кодом, не закомментированным, кажется, что он не запускается, когда по любой ячейке в диапазоне дважды щелкают. Есть ли у меня неправильное понимание того, как использовать для l oop? Или я пропустил гораздо более простой метод?