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
我写了下面的代码:
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