Excel VBA目标。偏移量(#,#)。解释值

Excel VBA目标。偏移量(#,#)。解释值,vba,excel,Vba,Excel,我有一个问题,关于我试图使用的工作簿中的sub的一段代码: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim firstCell As String On Error GoTo Done: If Target.Column = 6 And Target.Cells.Count = 1 Then

我有一个问题,关于我试图使用的工作簿中的sub的一段代码:

   Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim firstCell As String

            On Error GoTo Done:

            If Target.Column = 6 And Target.Cells.Count = 1 Then
                Cancel = True
                ***firstCell = Target.Offset(0, -2).Value***
                If firstCell = "" Then GoTo Done:
                Sheets("Sheet1").Activate
                Sheets("Sheet1").Range("$D$1").Value = firstCell
            End If
    Done:
    End Sub

最让我困惑的部分是
Target.Offset(0,-2)
表达式括号中的值
(0,-2)
。有人能解释一下这段代码在sub中做了什么吗?

Offset()使用行/列(RC)表示法。第一个值是行引用,如果它是+/-行(在本例中,零表示现有行),列引用有+/-(在本例中,它是-2列,因此如果它是d(4),则使用B(2))。这意味着第一个单元格作为字符串是输入到偏移单元格中的文本,取自目标。@Cyril,换句话说,单元格F1中的值将等于D1中的值,依此类推。对吗?@anve firstcell=F1。偏移量(0,-2)。Value=D1.Value。简短回答:是。@anve单独一点。。。我经常建议习惯于使用Cells()而不是Rane(),对于单个单元格。有助于保持一致性,在我看来,在建筑的VBA方面更容易得到帮助。偏移量是偏移量(行、列)、单元格(行、列)。在您的代码中,您将看到Sheets(“Sheet1”).Range($d$1”).Value=firstCell变为Sheets(“Sheet1”).Cells(1,4)。Value=firstCell或Sheets(“Sheet1”).Cells(1,“d”).Value=firstCell,具体取决于您希望显示的方式。