ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何获取当前屏幕中第一行标(列标)和最后一行标(列标)?

如何获取当前屏幕中第一行标(列标)和最后一行标(列标)?

作者:绿色风 分类: 时间:2022-08-18 浏览:164
楼主
DJ_Soo
昨天下午为此问题搜了N久网页,其实初衷是为了将一段话显示在新建的worksheet中最中间的位置(我的电脑是竖屏显示,但写的代码是给别人用),但如此就必须获得当前屏幕中能看到的第一行和最后一行以此判断中间的那个行标,列亦如此.
今天一早想到昨天的问题还是想找到方法,昨天全是搜索没有自己动手,今天自己动手试试.
随便建了一个过程:
  1. Sub test()
  2.     Dim Window As Object
  3.     Set Window = Application
  4.     Stop
  5.     Set Window = ActiveWorkbook
  6.     Stop
  7.     Set Window = ActiveWindow
  8.     Stop
  9. End Sub
一次次运行一次次看本地属性..
不得不说我这个人还是很背的,我列出三种可能,答案就一定不会在第一第二种可能中出现!o(╯□╰)o
此间我尝试过scrollrow,activepane等,都不是我想找的总高度和总宽度貌似也可以求得,但都不是我想要的(虽然新建的窗口中可以平均换算)
终于看到了这个:
 
从类型中可以看到这是个range类型,那么既然是可见的range,应该是从这里可以找到答案.看看其中包含的各种属性:

 
这样找到了Column对应的列标,同样也可以找到行标Row
把屏幕往下拉到可见区域为第一行行标26,测试了一下,得到Window.VisibleRange.Row结果为26,再尝试用Window.VisibleRange.Rows.Count得到可见区域一共46行,那么可以得到最下面的行标为26+46-1=71,对照正确!
总结结果为:
  1. Option Explicit

  2. Sub Get_VisibleRange_RC()
  3.     Dim aWd As Window
  4.     Dim fstRo As Long       '可见区域第一行
  5.     Dim lstRo As Long       '可见区域最后一行
  6.     Dim fstCol As Long      '可见区域第一列
  7.     Dim lstCol As Long      '可见区域最后一列
  8.    
  9.     Set aWd = ActiveWindow
  10.     With aWd.VisibleRange
  11.         fstRo = .Row
  12.         lstRo = fstRo + .Rows.Count - 1
  13.         fstCol = .Column
  14.         lstCol = fstCol + .Columns.Count - 1
  15.     End With
  16.     Debug.Print "第一行", "最后一行", "第一列", "最后一列"
  17.     Debug.Print fstRo, lstRo, fstCol, lstCol
  18. End Sub
2楼
0Mouse
值得一提的是,虽然VisibleRange字面上看是“可视区域”,但是在冻结窗格后,貌似它并不受隐藏行、列的影响,而与滚动条的位置密切相关,举例如下:
代码:
  1. Sub xq()
  2. MsgBox ActiveWindow.VisibleRange(1).Address
  3. End Sub
情况1:

 
情况2:

 
情况3:

 
附件:
visible附件.rar

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap