优化排名,哈尔滨网站基础优化,08影院源码WordPress,能够做渗透的网站上一篇博客#xff08;文章连接如下#xff09;中使用工作表事件Worksheet_SelectionChange实现了窗体跟随活动单元格的动态效果。 VBA窗体跟随活动单元格【简易版】(1/2) 为了在用户滚动工作表窗体之后仍能够实现跟随效果#xff0c;需要使用Application.Windows(1).Visibl…上一篇博客文章连接如下中使用工作表事件Worksheet_SelectionChange实现了窗体跟随活动单元格的动态效果。 VBA窗体跟随活动单元格【简易版】(1/2) 为了在用户滚动工作表窗体之后仍能够实现跟随效果需要使用Application.Windows(1).VisibleRange对于显示位置进行调整。俗话说条条大路通罗马本文将接受另外一个实现方法。
示例代码如下。 -- 普通标准模块代码 --
Public bShow As Boolean -- ThisWorkbook 模块代码 --
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)If bShow Then Unload UserForm1
End Sub -- 工作表模块代码 --
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim frm, TopOffset As Single, LeftOffset As SingleTopOffset 162LeftOffset -6If Not bShow Then UserForm1.Show 0Set frm UserForm1With TargetIf .Column 2 Thenfrm.Show 0frm.Top ExecuteExcel4Macro(GET.CELL(43)) TopOffsetfrm.Left ExecuteExcel4Macro(GET.CELL(42)) .Width LeftOffsetElsefrm.HideEnd IfEnd With
End Sub【代码解析】 代码框架与上一篇博客相同这里不再赘述只讲解变更的部分。 第20行和第21行代码分别设置窗体的Top属性和Left属性即调整窗体的显示位置。 其中使用了宏表函数GET.CELL(x)获取单元格的位置42代表垂直偏移43代码水平偏移。 使用GET.CELL(x)获取单元格的位置和单元格的Top属性和Left属性是否相同呢接下来就验证一下。
Sub Demo()Debug.Print ActiveCell.Top, ActiveCell.TopDebug.Print ExecuteExcel4Macro(GET.CELL(43)), _ExecuteExcel4Macro(GET.CELL(42))
End Sub同样都是单元格A1为活动单元格在3种不同状态运行上述代码结果如下。不难看出
单元格的Top属性和Left属性在3中场景中都是相同的也可以说两个属性是以A1单元格左上角为坐标原点的偏移量两个属性返回值为非负数。GET.CELL(x)返回值是随着显示状态不同而变化其值可正可负其坐标原点大致位于图中鼠标箭头所在位置。 0 0 17.2 25 0 0
-80 -27.80 0 51.4 25 正是由于GET.CELL(x)具备这个特性所以在调整自定义窗体显示位置时无需再使用Application.Windows(1).VisibleRange。由于坐标原点有变化TopOffset和LeftOffset偏移量也需要进行相应的调整。