Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码效率-excel范围_Vba_Excel - Fatal编程技术网

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