VBA代码效率-excel范围
我有一个代码,我在下面运行,这很好 问题:是否有更有效的方法编写此代码?(简短)VBA代码效率-excel范围,vba,excel,Vba,Excel,我有一个代码,我在下面运行,这很好 问题:是否有更有效的方法编写此代码?(简短) 假设文本不在同一张纸上,这是什么 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("D20,D24,D25,D27,D28,D30,D31,D32")) Is Nothing Then Exit Sub 'Cancel=True Sheet2.R
假设文本不在同一张纸上,这是什么
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("D20,D24,D25,D27,D28,D30,D31,D32")) Is Nothing Then Exit Sub
'Cancel=True
Sheet2.Range(Target.Address).Value = "Prepared By" & " " & Environ("Username") & " " & Format(Now(), "yyyy-MM-dd hh:mm:ss")
End Sub
另一个选项,不使用Intersect:
您可以存储地址D20、D24、D25。。在一个数组中。然后在数组上循环。这应该在codereview中发布,而不是在代码运行时发布在这里。我喜欢它,它比我的更优雅(而且更高效?),我喜欢它运行良好。还有一个问题。如何将此代码应用于第4列和第5列@paulbica@James-我将其更新为
如果.Column=4或.Column=5,那么
@SJR-您的代码很短,而且也很明确(我的代码效率更高,因为它首先检查列)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("D20,D24,D25,D27,D28,D30,D31,D32")) Is Nothing Then Exit Sub
'Cancel=True
Sheet2.Range(Target.Address).Value = "Prepared By" & " " & Environ("Username") & " " & Format(Now(), "yyyy-MM-dd hh:mm:ss")
End Sub
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Column = 4 Or .Column = 5 Then
Select Case .Row
Case 20, 24, 25, 27 To 28, 30 To 32
Application.EnableEvents = False
.Value2 = "Prepared By" & " " & Environ("Username")
.Value2 = .Value2 & " " & Format(Now, "yyyy-MM-dd hh:mm:ss")
Application.EnableEvents = True
End Select
End If
End With
End Sub