Excel 在复制命令后停止滚动

Excel stops scrolling after a Copy command

我的工作簿的第二个工作表中有一组数据条目,它们是使用过滤器的列表的一部分。使用 VBA 我创建了一个按钮,单击该按钮会打开一个用户窗体,让用户输入他们想要的数据 selection 从第二个工作表复制到第一个工作表。这是通过让用户检查 8 个可能的 OptionButtons 中的 1 个,然后让用户 select 从 ComboBox 的 5 个可能选项中的 1 个来完成的。一切都很好,用户窗体输入中的每个可能组合都会导致将正确的数据从第二个工作表复制到第一个工作表。但是,复制成功后,我无法在第一个工作表中使用滚轮进行滚动。使用滚轮滚动时,"square" 会在滚动条中移动,但工作表不会移动。 两个工作表之间的主要区别在于,在第一个工作表中,没有过滤器,并且复制的 selection 总是比源数据少数据,但这没有太大区别(源数据在第二个工作表中大约有 300 行,最小的复制可能性大约为 12 行)。我搜索并尝试了以下解决方案,并得到了相应的结果。

  1. 解冻窗格;建议的一种解决方案是解冻窗格,因为 Excel 可能会在复制后冻结所有行。但是,当检查时没有 "Unfreeze" 选项,表明我一开始没有冻结的窗格。此外,当我单击三个 "Freeze" 选项中的任何一个时,我想尝试手动 "Freeze" 然后 "Unfreeze" 来解决问题, Excel 将停止工作,给我标题栏中的 "Not Responding" 需要关闭 down/restarted.

  2. SelectObjects;另一个建议是 Excel 会在 "Home" 选项卡的 "Find & Select" 部分检查 "Select Objects"。当un-checking这个时候,问题应该就解决了。但是,它一开始并没有被检查。检查它然后un-checking它没有解决问题。

  3. 切换工作表;当我在复制命令后手动单击第二个工作表然后单击返回第一个工作表时,问题已解决,我可以再次使用滚轮。但是,我打算经常使用此工作簿,并且必须不断地来回单击会很痛苦。所以这不是真正的解决方案,更多的是解决方法。

  4. 拖动;我发现的另一个解决方法是单击然后拖动滚动条中的 "square" 确实可以移动工作表。然而,这又只是一个临时修复。

再提一件可能有用的事情。在工作表 1 和 2 中,我都使用了可折叠的列。工作表 2 还包含可折叠的行,而工作表 1 没有。

好吧,一时兴起,我尝试在sub

末尾输入以下2行代码
ThisWorkbook.Sheets("Overview").Activate      'Activates the 2nd Worksheet
ThisWorkbook.Sheets("Selection").Activate     'Activates the 1st Worksheet

这模拟了切换工作表的手动触发。它解决了这个问题。还是不明白为什么会出现这个问题,不过已经解决了。

我遇到了类似的问题,我最初的解决方法是使 userForm 无模式:

Sub addButton()

builderForm.Show (0)

End Sub

我不太喜欢让它保持无模式状态,所以我最终使用了您的 sheet 切换方法,如下所示:

Sub addButton()

builderForm.Show

Sheets("Cover").Activate
Sheets(Worksheets.count - 10).Activate

End Sub

我还是不完全明白为什么会这样;这几乎就像 windows/excel 忘记了哪个 sheet 是活动的,而用户窗体是 运行.

感谢您的submission/answer!

当工作表有太多复制的条件格式规则时,也会发生这种情况。清理 extra/duplicated 规则后,我可以在复制单元格后再次滚动。

在此处 https://superuser.com/questions/419287/how-to-copy-paste-without-conditional-formatting

找到关于 copying/pasting 的有用信息,无论是否使用条件格式