避免在选择范围时改变焦点 -- Excel。

4
我有一个宏,根据某些条件从给定的范围创建子范围。然后将此子范围复制到某个位置,在那里形成图表读取的数据。
每次单击微调器时,都会调用该宏,因为这会更改原始范围,因此需要计算新的子范围。
该过程运行良好,尽管它可能非常原始(使用VBA-Excel进行首次编码经验)。唯一的问题是,当我单击微调器以更新数据并启动例程时,“Sheet”的“焦点”从按钮位置移动到宏所处理的范围的开头。
我通过在例程结束时使用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

你需要使用“Pastespecial”吗?如果不需要,那么可以使用以下代码,这样就不会发生移动了:o.Copy InRange(1, 1).Offset(2, -1) - Siddharth Rout
谢谢你的回复,Siddarth。不确定我是否理解了你的问题。一旦我“评估”了所需的范围,也就是说,我知道哪些单元格满足某个条件,那么我需要在工作表的其他位置“物理地”拥有这些单元格,因为它们是我希望显示的数据集。 - Michele Ancis
请参见下面的答案 :) - Siddharth Rout
2个回答

4
正如我所提到的,你可以像在 Way1 中所示一样避免使用 pastespecial,或者如果你想要数值,则可以用 Way2 中所示的代码替换它。
o.Copy
InRange(1, 1).Offset(2, -1).PasteSpecial (xlPasteValues)
方式1 o.Copy InRange(1, 1).Offset(2, -1) 方式2 InRange(1, 1).Offset(2, -1).Resize(o.Rows.Count, o.Columns.Count).Value = o.Value 这是一段代码,没有上下文很难确定具体含义。

谢谢Siddhart,我也会尝试Way2,但这会改变我的InRange,对吧?我不想要那样。只是从现有的一个子范围创建/另一个/子范围。 原则上,我可以理解你的观点。如果我足够聪明和熟练,我就不需要在任何地方复制子范围,只需使用它即可。也许使用此子范围作为我的x值更新图表,使用另一个子范围作为我的y值。 - Michele Ancis

4
也许:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接