当前位置: 首页 > news >正文

网站开发与维护是学什么湖南省人民政府官网

网站开发与维护是学什么,湖南省人民政府官网,天眼免费查询个人,哈尔滨市建设工程交易信息网本篇博客与以往的风格不同,先上图再讲解。 这个效果是不是很酷,VBA窗体(即UserForm,下文中简称为窗体)可以实现很多功能,例如:用户输入数据,提供选项等等。如本博客标题标注&#…

本篇博客与以往的风格不同,先上图再讲解。
请添加图片描述

这个效果是不是很酷,VBA窗体(即UserForm,下文中简称为窗体)可以实现很多功能,例如:用户输入数据,提供选项等等。如本博客标题标注,这里将要实现的一个简易版,代码行数少,容易理解,便于大家移植,但是其适用场景有局限性,如果希望完美实现,那么就需要适用Windows API来精确定位。

先讲解一下代码框架。

' -- 普通(标准)模块代码 --
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)' 调整窗体显示位置实现跟随效果
End Sub

代码解析:
普通模块中定义共有变量bShow用于保存窗体状态。
工作簿模块中Workbook_BeforeClose事件代码在工作簿关闭时被激活,如果窗体已经被加载,那么Unload UserForm1将销毁窗体。
工作表模块中Worksheet_SelectionChange事件代码用于根据活动单元格调整窗体显示位置实现跟随效果。


先思考一下代码逻辑,窗体跟随其实就是根据活动单元格调整窗体的TopLeft,单元格是Range对象,也具有TopLeft属性,使用Worksheet_SelectionChange事件代码应该就可以吧。

示例代码如下。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim frmIf Not bShow Then UserForm1.Show 0Set frm = UserForm1With Targetfrm.Top = .Topfrm.Left = .Left + .WidthEnd With
End Sub

测试一下效果。

在这里插入图片描述

这是什么鬼!窗体为什么出现在一个不着边际的地方,在立即窗口中查看一下B1单元格的相关属性。

?[b1].top
0
?[b1].left
52.8

单元格的这两个属性返回值是相对于工作表中表格区域左上角的偏移量,然而窗体的相对于屏幕左上角的偏移量,Excel的功能区高度是固定的,那么加个固定偏移量就可以了。

示例代码如下。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim frmIf Not bShow Then UserForm1.Show 0Set frm = UserForm1With Targetfrm.Top = .Top + 180frm.Left = .Left + .Width + 19End With
End Sub

so easy 轻松实现了窗体跟随效果。

在这里插入图片描述

注意:针对不同版本的Excel,这个偏移量可能并不相同,

滚动屏幕,发现窗体又双叒叕溜号 …

继续排障大法,立即窗口中查看单元格B7的Top属性,明明是第一行,其结果竟然是97.2。看来这个偏移量是相对于整个表格区域坐上角,并非可见区域。

?[b7].top
97.2

在这里插入图片描述

查看VBA对象模型,Application.Windows(1).VisibleRange是工作表的可见单元格区域,利用这个Range对象,就可以实现真正的窗体跟随效果。代码中增加了限制添加,只有选中B列单元格才显示窗体,各位同学可以根据实际需要修改限制条件。

优化代码如下。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim frm, TopOffset As Single, LeftOffset As SingleTopOffset = 180LeftOffset = 19If Not bShow Then UserForm1.Show 0Set frm = UserForm1With TargetIf .Column = 2 Thenfrm.Show 0frm.Top = .Top + TopOffset - Application.Windows(1).VisibleRange(1).Topfrm.Left = .Left + .Width + LeftOffsetElsefrm.HideEnd IfEnd With
End Sub
http://www.wangmingla.cn/news/46462.html

相关文章:

  • dw做的网站设计百度账号个人中心
  • 楚雄网站制作网站收录查询系统
  • 做微信小程序和网站那个简单网站推广的基本方法
  • 阿里云服务器怎么安装wordpress山西网络营销seo
  • 做网站建设的企业还有那些游戏推广员是诈骗吗
  • 如何做简单的网站深圳seo公司助力网络营销飞跃
  • 视频网站程序应用市场
  • 从事网站开发办理什么个体怎么做宣传推广
  • php网站的客服窗口怎么做网站流量查询网站统计查询
  • 网站规划设计书sem竞价推广代运营
  • 沧州做企业网站公司天津百度网站快速优化
  • weui.css做网站seo教程搜索引擎优化入门与进阶
  • 池州专业网站建设哪家好搜索引擎优化技术
  • 网站后台不能上传图片网站seo关键词设置
  • 商城网站怎么做seo今日预测足球比分预测
  • 手机网站显示建设中google浏览器官网下载
  • 商户如何做h5商城网站是什么网站免费搭建平台
  • h5彩票网站怎么做长春网站建设策划方案
  • 怎么做自动提卡网站关键词排名优化公司哪家强
  • 建宣传网站百度客户电话
  • 天津网站建设 企航互联中国新冠疫苗接种率
  • 如何把反邪教网站做的接地气seo综合查询是什么
  • 宁波网站建设接单东莞互联网推广
  • 西安市网站制作公司一键优化下载
  • 百度推广做网站seo优化信
  • 做风水网站上海关键词优化按天计费
  • wordpress获取真实ip南宁seo平台标准
  • 做网站公司汉狮百度搜索指数排行
  • 网站做三方登陆需要注册公司不百度网盘app下载安装手机版
  • 网站开发技术公司网页设计的流程