gpt4 book ai didi

excel - 选择范围时避免焦点变化——Excel

转载 作者:行者123 更新时间:2023-12-01 04:46:31 37 4
gpt4 key购买 nike

我有一个宏,它根据某些标准从一个给定的范围内创建一个子范围。
然后将该子范围复制到某个位置,形成图表读取的数据。

每次单击微调器时都会调用宏,因为这会更改原始范围,因此需要计算新的子范围。

该过程运行良好,尽管它可能非常原始(VBA-Excel 的第一次编码经验)。只有一点,当我单击微调器以更新数据并启动例程时,工作表的“焦点”从按钮的位置移动到宏工作范围的开头。

我通过在例程结束时使用 Application.Goto 来克服这个问题,将窗口的左上角带回图表和按钮所在的位置。

但是,这意味着每次我运行宏时,窗口内容都会移动到该范围,然后回到我想要的位置。这不是很优雅,除了可能引起一些晕船;-)

我想知道我是否可以避免这种情况,以及如何避免。

感谢您的任何输入,代码如下。

Sub test_copy2()
Dim InRange As Range
Dim c As Range, o As Range, t As Range
Dim r As Integer
Set InRange = Cells.Range("M434:ATF434")
Set o = Cells.Range("L434")
For Each c In InRange
If c.Offset(-219, 0).Value = 8448 Then
Set t = Application.Union(o, c)
Set o = t
End If
Next c
o.Copy
InRange(1, 1).Offset(2, -1).PasteSpecial (xlPasteValues)
Application.Goto Cells.Range("AF456"), Scroll:=True
End Sub

最佳答案

也许:

Sub test_copy2()
Dim InRange As Range
Dim c As Range, o As Range, t As Range
Dim r As Integer
Set InRange = Cells.Range("M434:ATF434")
Set o = Cells.Range("L434")
Application.ScreenUpdating = False
For Each c In InRange
If c.Offset(-219, 0).Value = 8448 Then
Set t = Application.Union(o, c)
Set o = t
End If
Next c
o.Copy
InRange(1, 1).Offset(2, -1).PasteSpecial (xlPasteValues)
Application.Goto Cells.Range("AF456"), Scroll:=True
Application.ScreenUpdating = True
End Sub

关于excel - 选择范围时避免焦点变化——Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123475/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com