Excel、目标列、目标偏移量,可以从另一个 sheet 中提取吗?

Excel, Target Column, Target Offset, possible to pull from another sheet?

我写了下面的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
  If Target.Column = 6 Then
    Call Current30(Target.Offset(0, -4).Text, Target.Offset(0, 10).Text, Target.Offset(0, 11).Text)
  ElseIf Target.Column = 7 Then
    Call Current(Target.Offset(0, -4).Text, Target.Offset(0, 9).Text, Target.Offset(0, 10).Text)
  End If
End Sub

如果您不明白,它的作用是获取您单击的单元格,使用它当前所在的行,然后根据所选单元格的偏移量在同一行中选择 3 个单元格。我有另一部分吐出这个,所以我可以在别的地方使用它。

我计划将存储在它拉取的那 3 个单元格中的信息移动到另一个 sheet。但是,我不确定如何完成相同的任务,而是从另一个 sheet 中提取,有人可以帮我解决这个问题吗?

编辑

为了澄清这一点,我将选择的单元格在一个 sheet 中,而我需要从同一行的 3 个单元格中提取的信息将在第二个 sheet 中.

将现有代码移至其他工作sheet 模块。只要您的 Current30()Current() 例程中没有任何硬引用当前 sheet 的例程(通过名称或数字指定它),您就是黄金。

如果那些 do 明确引用它,请修改它们以完成与您传入的 3 个单元格相关的所有工作,或者修改子例程调用以传入当前工作sheet并使用它。

更新 根据您在 OP 中的说明:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim OtherSheet as worksheet

  Set OtherSheet = Workbooks("Sheet2") 'change the sheet name to suit
  If Target.Column = 6 Then
    Call Current30(OtherSheet.Cells(Target.Row, Target.Col-4).text, _
                   OtherSheet.Cells(Target.Row, Target.Col+10).text, _
                   OtherSheet.Cells(Target.Row, Target.Col+11).text)
  ElseIf Target.Column = 7 Then
    Call Current(OtherSheet.Cells(Target.Row, Target.Col-4).text, _
                 OtherSheet.Cells(Target.Row, Target.Col+9).text, _
                 OtherSheet.Cells(Target.Row, Target.Col+10).text)
  End If
End Sub

应该为你做。

我能够使用以下 VBA:

让它工作
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    If Target.Column = 9 Then
        Call Email(ThisWorkbook.Sheets("Sheet2").Range("B" & Target.Row).Text, _
            ThisWorkbook.Sheets("Sheet2").Range("C" & Target.Row).Text, _
            ThisWorkbook.Sheets("Sheet2").Range("D" & Target.Row).Text, _
            ThisWorkbook.Sheets("Sheet2").Range("E" & Target.Row).Text, _
            ThisWorkbook.Sheets("Sheet2").Range("F" & Target.Row).Text)
    End If
    Cancel = True
End Sub

Private Sub Email(ByVal VV As String, ByVal WW As String, ByVal XX As String, ByVal YY As String, ByVal ZZ As String)
    Dim dblShellRetn As Double
        dblShellRetn = Shell("C:\Program Files (x86)\AutoHotkey\AutoHotkeyU32.exe" & _
        Chr(32) & Chr(34) & "C:\Scripts\Script.ahk" & Chr(34) & _
        Chr(32) & Chr(34) & VV & Chr(34) & _
        Chr(32) & Chr(34) & WW & Chr(34) & _
        Chr(32) & Chr(34) & XX & Chr(34) & _
        Chr(32) & Chr(34) & YY & Chr(34) & _
        Chr(32) & Chr(34) & ZZ & Chr(34), vbNormalFocus)
End Sub