我写了以下代码:
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个单元格中提取的信息将在第二张纸中。
答案 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