我有一个电子表格(示例电子表格 ),当电子表格向下滚动时,我想向下滚动并冻结两个单独的行。当第1行“滚动”时,我希望它冻结第2-4行,并继续滚动其余的行(在已经冻结的第2~4行下面),直到第62行,然后它将冻结行62-64 (除了已经冻结的第2-4行),并一直滚动到电子表格的末尾。
例如,:--我有一个有两个“区域”的工作表。最上面的区域显示月货币的数量,而年度货币的比率较低。它在第1行上没有任何内容,月份标题(12月19日、1月20日等)位于第4行。在我的示例电子表格中,我的第1行滚动(隐藏-滚动),第2-4行被冻结。然后我向下滚动,直到我到了第62行,在那里我的年度货币填充头出现,然后它将冻结行62-64,并继续滚动剩余的行。
这样的事情可以用某种编码吗?
发布于 2019-11-29 01:01:33
备选案文1:折衷办法
这不是一项容易的任务,因此您可能需要考虑将两个部分分割成两个不同的表,并在每个工作表中使用冻结窗格方法,如下所示:

对于第1行,如果它困扰您,您可以简单地滚动如果在应用冻结之前。
您甚至可以在页面的底部/顶部添加一个按钮,以使用户在单击时转到另一个工作表,以获得更好的用户体验。
备选方案2:全面执行
首先,有皮尔逊博客上的一篇文章展示了如何使用类和Windows使用VBA检测窗口滚动。这是有点先进,但这是必不可少的,如果你想要达到你想要的结果。
其次,您需要使用ActiveWindow.FreezePanes属性来切换窗格的冻结(真或假)。这里唯一的问题是,冻结窗格的方式将受到选择单元格的影响,因此您的代码必须选择适当的单元格(最左边的单元格位于您不想像上面的in图像那样滚动的区域下面)。它还必须确保上面的数据是滚动过去的。
因此,您可以根据C. Pearson方法中提供的左上角单元格的行设置一个条件,如果该行大于某一阈值,它将1)解冻窗格;2)滚动到右行和列;3)选择适当的单元格;4)像这样重新应用冻结:
ActiveWindow.FreezePanes = False
ActiveWindow.ScrollRow = 62
ActiveWindow.ScrollColumn = 1
ActiveSheet.Range("A65").Select
ActiveWindow.FreezePanes = True同样地,当用户回滚时也是如此。
https://stackoverflow.com/questions/59096055
复制相似问题