繁体   English   中英

VBA宏在所有工作表上选择相同的单元格

[英]VBA Macro To Select Same Cell on all Worksheets

我对 VBA 有点新,这个特定的操作似乎超出了我目前的知识范围。

有没有办法编码 VBA 让它在所有工作表上主动选择与当前选择的单元格相同的单元格? 我有一个模型,我已经放在一起,让我的团队可以在 Sheet1 的 A 列中同时输入有关产品 SKU 的数据,但由于我们为每个项目输入的信息量很大,我使用了多张表

例如,如果我在 Sheet1 上选择了单元格 H4,是否可以在切换到其他工作表时让所有其他工作表活动单元格 H4?

到目前为止,这是我在测试工作簿上提出的,但似乎不起作用:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Select Case LCase(Sh.Name)
Case Is = "sheet1", "sheet2", "sheet3"
    If CurRow > 0 Then
    With Application
        .EnableEvents = False
        .Goto Sh.Cells(CurRow, CurCol), Scroll:=True
        Sh.Range(ActCellAddr).Select
        .EnableEvents = True
    End With
    End If
    End Select

End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Select Case LCase(Sh.Name)
    Case Is = "sheet1", "sheet2", "sheet3"
        CurRow = ActiveWindow.ScrollRow
        CurCol = ActiveWindow.ScrollColumn
    ActCellAddr = ActiveCell.Address
    End Select

End Sub

我在下面找到了这个代码:

Excel VBA 代码允许用户在每张工作表上选择相同的单元格

但这需要用户实际输入他们想要选择的单元格。 我正在寻找它是自动的。

任何提示或建议? 任何帮助是极大的赞赏。

您可以将以下内容发布到工作簿中的每个工作表。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Set CurrWS = ActiveSheet
    For Each WS In ThisWorkbook.Worksheets
        WS.Activate
        WS.Range(Target.Address).Select
    Next
    CurrWS.Activate

End Sub

每次选择一个单元格时,它都会在所有工作表中循环并在那里选择相同的单元格。 这样做的缺点是显而易见的:如果你有太多的床单,那将会很乏味。 另一个问题是它会循环遍历所有内容。 因此,如果您打算使用它进行数据输入,它可能会弄乱其他一些工作表。

否则,如果它只是选择单元格,那么这是无害的,尽管闪烁有时会很明显,这取决于你有多少张纸。

不像人们想要的那样优雅,但它有效。 祝你好运,如果这有帮助,请告诉我们。

值得注意的是有一个工作簿级别的事件处理程序来处理相同的事件,因此您只需将代码添加到 ThisWorkbook 代码模块:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
                                          ByVal Target As Range)

Sh代表 ActiveSheet。

可能还值得在您选择其他工作表上的范围时禁用事件,或者这将重新触发您的事件处理程序(不要忘记在退出代码之前重新打开事件处理程序!)

这种方法将测试隐藏的工作表。 它选择所有非隐藏的工作表,选择目标单元格然后返回到原始工作表。 即使您有很多标签,它的工作速度也非常快。

targetcell = ActiveCell.Address
OriginSheet = ActiveSheet.Name
Dim ws As Worksheet
For Each ws In Sheets
    If ws.Visible = True Then ws.Select (False)
Next ws
range(targetcell).Select
Sheets(OriginSheet).Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM