更换工作表时Excel如何选择相同的单元格?

时间:2013-12-23 14:53:01

标签: excel vba excel-vba

我有3张Excel工作簿。我想使用一个宏来更改工作表时选择相同的单元格。

例:
当我切换到sheet2时,我在sheet1单元格A3中。我想要在sheet2中选择A3。当我切换到sheet3时也一样。

有可能吗?
我尝试使用事件sheet_activate,sheet_deactivate和sheet_change。最后一个肯定是错的。

3 个答案:

答案 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