Vba 在输入用户表单数据后自动输入日期
一旦我通过“输入/单击”按钮从用户表单中输入数据,是否有一种方法可以自动确定日期或时间?我尝试了此代码,但它一直在重新启动我的excel工作簿。除此之外,我在Vba 在输入用户表单数据后自动输入日期,vba,excel,userform,Vba,Excel,Userform,一旦我通过“输入/单击”按钮从用户表单中输入数据,是否有一种方法可以自动确定日期或时间?我尝试了此代码,但它一直在重新启动我的excel工作簿。除此之外,我在Private子工作表\u Change(ByVal Target作为范围) 有可能超载了吗 所以我在想,如果我能用我的Userform_click()编写代码,我会更好吗 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer For i = 16 To
Private子工作表\u Change(ByVal Target作为范围)
有可能超载了吗
所以我在想,如果我能用我的Userform_click()编写代码,我会更好吗
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 16 To 100
If Cells(i, 3).Value <> "" Then
Cells(i, 1).Value = Date & " "
Cells(i, 1).NumberFormat = "mm/dd/yy"
End If
Next
End Sub
Private子工作表\u更改(ByVal目标作为范围)
作为整数的Dim i
对于i=16到100
如果单元格(i,3).的值为“”,则
单元格(i,1)。值=日期
单元格(i,1).NumberFormat=“mm/dd/yy”
如果结束
下一个
端接头
您需要将Application.EnableEvents=False
添加到子文件的开头,否则每次在工作表中更改值时,它都会继续运行该文件(例如,当您在中更改i=16到100的循环时)
代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.EnableEvents = False
For i = 16 To 100
If Cells(i, 3).Value <> "" Then
Cells(i, 1).Value = Date & " "
Cells(i, 1).NumberFormat = "mm/dd/yy"
End If
Next i
Application.EnableEvents = True '<-- restore to original setting
End Sub
您的处理程序是递归的,没有出路。处理程序在每次单元格更改时运行,它会更改单元格,这会再次运行处理程序,这会更改单元格,这会再次运行处理程序,这。。。这最终会炸毁调用堆栈,并使所有内容付之一炬。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
Application.EnableEvents = False
If Not Intersect(Range("C16:C100"), Target) Is Nothing Then
For Each C In Intersect(Range("C16:C100"), Target)
If C.Value <> "" Then
C.Offset(, -2).Value = Date & " "
C.Offset(, -2).NumberFormat = "mm/dd/yy"
End If
Next C
End If
Application.EnableEvents = True
End Sub