我的工作簿的第二个工作表中有一组数据条目,它们是使用过滤器的列表的一部分。使用VBA我创建了一个按钮,当单击它时,打开一个Userform,让用户输入他们想要的数据选择,从第二个工作表复制到第一个工作表。这是通过让用户检查8个可能的OptionButtons中的1个然后让用户从ComboBox中选择5个可能选项中的1个来完成的。一切都很好,Userform输入中的每个可能的组合都会导致正确的数据从第二个工作表复制到第一个工作表。但是,在成功复制后,我无法使用我的第一个工作表中的滚轮滚动。使用滚轮滚动时,“方形”在滚动条中移动,但工作表不会移动。 两个工作表之间的主要区别在于,在第一个工作表中,没有过滤器,并且复制的选择总是少于源数据的数据,但这并没有太大的区别(第二个工作表中的源数据是关于300行,最小复制可能性约为12行)。我搜索并尝试了以下解决方案,并附带了相应的结果。
解冻窗格;建议的一个解决方案是解冻窗格,因为Excel可能会在复制后冻结所有行。但是,检查时没有“解冻”选项,表示我没有开始冻结的窗格。此外,当我点击三个“冻结”选项中的任何一个时,我想我会尝试手动“冻结”然后“解冻”来解决问题,Excel会停止工作,在标题栏中给我“无响应”,需要关闭/重新启动。
选择对象;另一个建议是Excel将在“主页”选项卡的“查找和选择”部分中选中“选择对象”。取消选中此项时,应解决该问题。但是,它没有开始检查。检查它然后取消检查它不能解决问题。
切换工作表;当我在复制命令后手动单击第二个工作表然后单击返回到第一个工作表时,问题得到解决,我可以再次使用滚轮。但是,我打算经常使用这本工作簿,不得不经常来回点击会很痛苦。所以这不是一个真正的解决方案,而是更多的解决方法。
拖动;我发现的另一项工作是单击然后拖动滚动条中的“方形”确实会移动工作表。但是,这只是暂时的修复。
还有一件事可能有用。在工作表1和工作表中2我使用的是可折叠的列。工作表2还包含可折叠的行,而工作表1没有。
答案 0 :(得分:0)
好的,我突然想到将以下两行代码输入到子末尾
ThisWorkbook.Sheets("Overview").Activate 'Activates the 2nd Worksheet
ThisWorkbook.Sheets("Selection").Activate 'Activates the 1st Worksheet
这模仿了手动触发切换工作表。它解决了这个问题。仍然不明白为什么问题发生了但无论如何它已经解决了。
答案 1 :(得分:0)
我遇到了类似的问题,我最初的解决方法是让userForm无模式:
Sub addButton()
builderForm.Show (0)
End Sub
我不喜欢让它无模式,所以我最终使用了这样的表单切换方法:
Sub addButton()
builderForm.Show
Sheets("Cover").Activate
Sheets(Worksheets.count - 10).Activate
End Sub
我仍然不完全理解为什么会这样;它几乎就像windows / excel在userForm运行时失去跟踪哪个工作表是活动的。
感谢您的提交/回复!
答案 2 :(得分:0)
当工作表中复制的条件格式规则太多时,也会发生这种情况。清理完多余/重复的规则后,可以在复制单元格后再次滚动。
在https://superuser.com/questions/419287/how-to-copy-paste-without-conditional-formatting
中找到了有关有/无条件格式的复制/粘贴的良好信息。