Excel,目标列,目标偏移,是否可以从另一张纸张中拉出?

时间:2015-04-17 19:42:44

标签: excel vba excel-vba excel-2010

我写了以下代码:

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个单元格中的信息移到另一张纸上。但是,我不确定如何完成相同的任务,而是从另一张纸上取下,有人可以帮我解决这个问题吗?

修改

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

2 个答案:

答案 0 :(得分:1)

将现有代码移动到其他工作表模块。只要您的Current30()Current()例程中没有任何内容存在硬件参考当前工作表(通过名称或编号指定),您就会成为黄金。

如果那些 明确地引用它,修改它们以完成相对于您传入的3个单元格的所有工作,或修改子例程调用以传入当前工作表并使用这一点。

更新根据您的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

应该为你做。

答案 1 :(得分:0)

我能够使用以下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