我有一个工作表,在前几行中包含标题数据,后跟一个包含列标题的表。标题数据包括用于计算表中值的参数。
我想要的是允许用户滚动工作表以使标题数据不再可见,但是当它成为第一行时冻结表标题行。然后,如果他们需要更改参数,他们可以向上滚动并返回前几行。
我觉得这很容易做但我不记得怎么做了。我能找到的唯一选项是Freeze Panes选项,但冻结了所有内容,我只希望它在标题行位于顶部时冻结。
这甚至可能吗?
已编辑 - 要添加更多说明,冻结窗格选项会冻结所选行上方的所有内容(除非我已经错过了),这不是我要找的内容。我希望表单的行为类似于网站顶部可能有广告横幅,然后是导航栏/徽标/等,然后是内容。向下滚动时,广告横幅移出视图,但当导航栏位于顶部时,它会停止并在内容继续滚动时保持在视图中。
假设我有前5行有单元格来捕获输入值。然后第6行是表标题,第7-100行是表数据。我希望用户能够按下向下滚动按钮5次以移过输入值。然后我希望第6行冻结在顶部,以便在用户继续滚动时,表标题可见。相反,当用户向上滚动时,第6行保持在顶部,直到用户到达第7行,然后如果它们继续滚动,则输入值移动到视图中。
如果您使用“format as table”函数并且指示选择具有标题行,则Excel会执行类似的操作。然后在滚动时,列标题将替换“A”,“B”,“C”等地址标签。这对我来说不起作用,因为表结构有点复杂。
答案 0 :(得分:0)
在工作表的代码页(右键单击工作表名称选项卡,查看代码)中使用它。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iVISROWS As Long
Dim iHDRROWS As Long
iVISROWS = 5
iHDRROWS = 3
Cells(1, 1).Resize(iHDRROWS, 1).EntireRow.Hidden = _
Target(Target.Rows.Count).Row > iVISROWS
End Sub
(可选)取出iVISROWS
和iHDRROWS
的声明和分配,并将以下内容放入模块代码表的声明区域(顶部)。
Option Explicit
Public Const iVISROWS As Long = 5
Public Const iHDRROWS As Long = 3
使用标题行数(iHDRROWS)和触发隐藏标题行(iVISROWS)的当前选择的底部,以获得您正在寻找的结果。
答案 1 :(得分:0)
据我了解,您希望看到不是第一行的行或列。这有点奇特。
如果要隐藏可配置文件以节省可视空间并始终保留标头:
根据您的配置和标题,只需冻结尽可能多的行/列。然后隐藏您不希望总是在视野中的行/列。
你甚至可以通过一个单击按钮来隐藏和取消隐藏:
Sub transaction1()
Rows("10:50").Hidden = Not Rows("10:50").Hidden
End Sub
至于冻结窗格,如果有人不知道你可以冻结任意多的冻结窗格。如果要冻结A列和B列以及第1行和第2行,只需单击C3然后使用冻结功能。如果只想冻结10行 - 单击A11,然后使用冻结。
虽然我通常只是将我的服务空间卸载到其他地方并快速跳转到它并使用= HYPERLINK()
在任何情况下,您所需的结果都不比其他方式更方便,您可以轻松实现导航。因此,如果我要滚动到行14000,如果我想回滚到开头查看我的设置,我仍然需要通过14k行。具有始终冻结的设置区域和标题可以更快地导航。如果您的设置区域占用了大量空间,请移动它并为其创建更紧凑的导航,或者只是按需隐藏/显示它。
毫无疑问,你可以有更多奇特的方式来达到这个效果,但是这样做是强制性的吗?
答案 2 :(得分:0)
我遇到了同样的问题,并且对于完成上述所有编码的技术知识要少得多。 我的解决方法非常简单。 在工作表顶部插入一个新行。 将表格的标题复制到新行1,然后正常冻结顶行。 滚动时,顶部虚拟行会停留在您的桌子上方,其余部分会消失。 如果向上滚动,您的原始标题仍然会根据需要进行过滤。