VBA类模块封装

2018-09-26

"封装宏-------------------------

Sub 表达式变公式()

Dim g As New 功能库

g.公式变数值 Range("b3")

g.自定义格式变数值 Range("c3")

g.表达式变公式 Range("d3")

End Sub

Sub 删除重复值()

Dim cc As New 功能库

cc.删除重复数据 Selection

End Sub

"封装自定义函数-------------------------

Sub 计算()

Dim f As New 函数库

Debug.Print "和:" & f.求和(Range("a1:a5"))

Debug.Print "平均值:" & f.平均数(Range("a1:a5"))

Debug.Print "最大值:" & f.最大值(Range("a1:a5"))

End Sub

"类模块-------------------------

"窗体库

"下面是增加最大化最小化按钮声明

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Private Const GWL_STYLE = (-16)                 "窗口样式

Private Const WS_THICKFRAME = &H40000           "可更改大小

Private Const WS_MAXIMIZEBOX = &H10000

Private Const WS_MINIMIZEBOX = &H20000

"下面是去除窗体标题的声明

Private Const WS_CAPTION As Long = &HC00000

Dim hWnd, IStyle

Property Set 含最大最小按钮的窗体(fm As MSForms.UserForm)

Dim hWnd As String, MyType As String

hWnd = FindWindow("ThunderDFrame", fm.Caption)  "取得窗口句柄

MyType = GetWindowLong(hWnd, GWL_STYLE)         "取得窗口样式

MyType = MyType Or WS_THICKFRAME                "重新设置窗口样式

MyType = MyType Or WS_MAXIMIZEBOX               "添加最大化按钮

MyType = MyType Or WS_MINIMIZEBOX               "添加最小化按钮

SetWindowLong hWnd, GWL_STYLE, MyType           "应用样式

DrawMenuBar (hWnd)

End Property

Property Set 无标题窗体(frm As MSForms.UserForm)

hWnd = FindWindow("ThunderDFrame", frm.Caption) "获取窗口句柄

IStyle = GetWindowLong(hWnd, GWL_STYLE)

IStyle = IStyle And Not WS_CAPTION

SetWindowLong hWnd, GWL_STYLE, IStyle

DrawMenuBar hWnd

End Property

"类模块-------------------------

"功能库

Sub 公式变数值(rg As Range)

rg = rg.Value

End Sub

Sub 自定义格式变数值(rg As Range)

rg = rg.Text

End Sub

Sub 表达式变公式(rg As Range)

rg = "=" & rg.Value

End Sub

Sub 删除重复数据(rg As Range)

Dim d As New Dictionary, x As Integer

Dim arr

arr = rg

For x = 1 To UBound(arr)

d(arr(x, 1)) = ""

Next x

rg.Clear

rg.Cells(1, 1).Resize(d.Count) = Application.Transpose(d.Keys)

End Sub

"类模块-------------------------

"函数库

Function 求和(rg As Range)

求和 = Application.Sum(rg)

End Function

Function 平均数(rg As Range)

平均数 = Application.Average(rg)

End Function

Function 最大值(rg As Range)

最大值 = Application.Max(rg)

End Function

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

python封装vba_VBA类模块封装相关推荐

  1. 511遇见易语言注册调用乐玩插件类模块封装

    乐玩插件 是乐玩网络科技工作室在业余时间开发的一款安全,绿色,可靠的免费产品:功能强大,这里主要针对易语言对乐玩插件的调用,图色,窗口,字库的制作调用,后台的绑定,及判断,最后通过4种方法实现多线程多 ...

  2. Python 学习笔记 类的封装 类的继承 多态继承 类方法和静态方法 单例设计模式

    一.类的封装: 1.概念: 广义的封装:函数和类的定义本身,就是封装的体现 狭义的封装:一个类的某些属性,在使用的过程 中,不希望被外界直接访问,而是把这个属性给作为私有的[只有当前类持有],然后暴露 ...

  3. C++远征之封装篇——类和封装、实例化和对象成员访问

    一.封装篇的学习内容 数据成员  成员函数 构造函数  析构函数 对象复制  对象赋值 对象数组  对象指针 this指针 二.类与封装 三.实例化和对象成员访问 (1)从栈中实例化对象 (2)从堆中 ...

  4. php封装redis类,php封装redis操作类

    Redis系列-key相关主要操作函数_数学_自然科学_专业资料.这篇 blog 主要总结下,redis 中跟 key 相关的常用函数 1)keys 语法:keys pattern 解释:查找所有匹配 ...

  5. Intel Realsense D435 python wrapper pyrealsense 类模块汇总

    pyrealsense.config pyrealsense.context pyrealsense.device pyrealsense.pipeline

  6. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...

  7. python 面向对象(类)--学习笔记

    面向对象是一种编程方式, 主要集中在类和对象的两个概念 python 中的类符合封装, 继承, 多态的特征 类 是一个模板, 是n多函数的集成 对象 是类的实例化 类的成员分为三大类:字段.方法.属性 ...

  8. Excel VBA(09)类模块和数据库操作

    类模块详解 一.类模块入门 vba 中的类模块的概念和其他面向对象的语言里面的类的概念是类似的,就是抽取共性进行封装以便能够重复使用 类模块的插入 类模块的相关语句如下 1.let:设置对象属性 2. ...

  9. java如何实现封装_java如何实现封装

    Java中类的封装是如何实现的封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法. java封装类通过三个步骤实现: (1)修改属性的可见性,限制访问. (2)设置属性的读取方 ...

最新文章

  1. bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)
  2. 华人一作登ICCV 2021,实时超分新SOTA!AutoML显神威:1%参数量,超清视频70倍加速...
  3. 人群分析、人群计数 开源代码文献及数据库
  4. 机器学习揭示了人类大脑的新见解
  5. 中国铁建内网漫游沦陷多个重要部门泄漏大量信息(redis+ssh-keygen免认证登录案例)...
  6. Golang unsafe.Pointer指针
  7. lpop 原子_【concurrent】面试重灾区之原子操作你有必要了解下
  8. Java 8 并发: 原子变量和 ConcurrentMap
  9. 再提“鸿蒙”,任正非说这是为物联网而生;硅谷公司年薪报告出炉,谷歌年薪居榜首;苹果CEO库克接班人浮出水面,苹果高层或大换血?...
  10. python3纵向输出字符串_笔记||Python3之字符串格式化输出
  11. android 4 高级编程 第一章摘
  12. 大数据平台有什么功能
  13. 集体智慧编程Python
  14. 1.13 08特殊日历计算
  15. wincc变量数据归档(案例)
  16. CSS系列之 box-sizing
  17. 自定义B站视频播放速度
  18. Rust程序设计语言-使用包、Crate和模块管理不断增长的项目
  19. windows云服务器价格_windows云服务器安装(微软云服务器价格)
  20. 微信和QQ内置浏览器停止访问该网页,微信域名被屏蔽的解决方案

热门文章

  1. C语言程序设计#成绩查询系统
  2. 工作八年然是个二流的程序员
  3. 研究:非英语背景移民更易识别澳大利亚俚语
  4. Kali 获取WEP无线密码过程
  5. SpringBoot参数校验
  6. 如何拉开与周围人的差距?这5个超强的工具网站,助你一臂之力
  7. 农民伯伯android,[同人]墨水儿哥哥乡下小山村的农民伯伯生活.avi
  8. 51_LCD1602 - DS1302可调时钟
  9. 基于STM32F1系列和LDV5语音模块的语音控制LCD屏幕的点亮
  10. 基于Arduino的土壤湿度检测