各位论坛用户您好!我有一个带有两个选项卡的 excel 文件。当您双击第一个选项卡中的单元格时,会出现一个显示一些数据的表单。表单上有两个按钮。当您单击一个表单时,它会关闭,这里没有问题。当您单击第二个时,将在第二个工作表上启动一个单元格搜索宏。单元格位于,显示在屏幕中间,带有找到的单元格的第二张表被激活,表单关闭。从这里开始最有趣和最难以理解的事情。当我尝试使用滚轮滚动工作表时,没有任何反应。单元格不会向上或向下移动。此外,滚动条对滚轮的旋转做出反应,并且单元格在第一张纸上移动,当前未在屏幕上显示。只要我点击第一张,然后返回到第二张,工作就恢复了。文件在这里:https://cloud.mail.ru/public/7Tms/2wH2Wznrb
错误不会重现。它看起来像缺乏视频内存,一般的内存。
严重错误:
过程中的变量
全局变量
找出差异...过程级变量在不同的过程中可以具有相同的名称,模块级变量在不同的模块中可以具有相同的名称...但是如果这些变量重叠,则不能为变量赋予相同的名称!
我们吃记忆。
很多额外的任务,没有它们你可以放心地做。
此行分配一个内存区域来存储对象。如果内存在使用后没有被强制释放,该区域可能仍然被占用。分配的越多,被切断的内存就越多。因此,在完成代码的主要部分之后,必须释放内存。
过程级变量。它们占用内存直到程序结束。
公共变量(Public)。它们在工作簿打开时占用内存,只有在关闭后才释放。如果可以不用,最好不要使用。
例如,将所需汽车的号码转移到搜索程序。不需要公共变量,可以将值传递给过程:
搜索本身可以通过占用最少的内存来促进(在您的版本中,工作表被激活两次;三个对象被驱动到变量中;您可以使用一个变量作为最后一行和搜索行的编号):
搜索速度很快,为什么需要ProgressBar?为了更多的喘息?)
一路上。
不必为每个宏创建单独的模块。所以你会更加困惑。
一些程序可以合并为一个。例如,PredpriyatiyePoslednego*。3个或4个代码是一样的,只是变量变了。
在代码中,最好使用工作表的内部名称,否则可能会在狡猾的用户重命名工作表后崩溃。
在工作表事件过程中,您可以设置响应范围。没有必要写“如果我们点击一个不包含车号的单元格”......
不必清除这些行,而是删除它们。在不允许删除行的情况下,清除范围。帮助表上有超过 35,000 条自定义范围线(1221 条数据线)。这是文件的额外权重,处理数组时的额外范围......
一般来说,你可以写很多......问题的作者应该很高兴 - 有成长的空间)
我解决了这个问题,可能不是很聪明,但它有效!简而言之,您需要在激活过程中不使用滚轮滚动的工作表的根部注册此工作表的激活,我尝试了我所知道的一切,只有这有帮助。然而,它在您选择任何单元格后工作在选定的工作表上。
看来这个问题在微软员工的努力下得到了解决。看起来 Office 更新成功了。Windows 10、Office 2016 - 无需我干预即可运行!