我有3张Excel工作簿。我想使用一个宏来更改工作表时选择相同的单元格。
例:
当我切换到sheet2时,我在sheet1单元格A3中。我想要在sheet2中选择A3。当我切换到sheet3时也一样。
有可能吗?
我尝试使用事件sheet_activate,sheet_deactivate和sheet_change。最后一个肯定是错的。
答案 0 :(得分:2)
你很亲密。这会使用模块级变量在SheetSelectionChange事件触发时存储ActiveCell地址:
Dim ActiveCellAddress As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.ScreenUpdating = False
Sh.Range(ActiveCellAddress).Activate
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ActiveCellAddress = ActiveCell.Address
End Sub
答案 1 :(得分:1)
这是单向示例。如果您从Sheet1开始并选择Sheet2或Sheet3,您将保持与Sheet1上相同的地址。
在标准模块中,包括单行:
Public addy As String
在Sheet1代码区域中,包含以下事件宏:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
addy = ActiveCell.Address
End Sub
在Sheet2和Sheet3代码区域中,包括以下事件宏:
Private Sub Worksheet_Activate()
If addy <> "" Then
Range(addy).Select
End If
End Sub
答案 2 :(得分:0)
我使用以下宏在工作簿中的所有工作表上选择单元格A1。我将此宏指定给工具栏上的按钮。您可以修改它以使其适用于更换工作表。
Sub Select_Cell_A1_on_all_Sheets()
Application.ScreenUpdating = False
On Error Resume Next
Dim J As Integer
Dim NumSheets As Integer
Dim SheetName As String
CurrentSheetName = ActiveSheet.Name
NumSheets = Sheets.Count
For J = 1 To NumSheets
SheetName = Sheets(J).Name
Worksheets(SheetName).Activate
Range("A1").Select
Next J
Worksheets(CurrentSheetName).Activate