百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

vba常用代码总结

wptr33 2024-12-09 18:01 41 浏览

一,字符串操作

Trim(String) '去掉string左右两端空白

LTrim(String) '去掉string左端空白

RTrim(String) '去掉string右端空白

Len(String) '计算string长度

Left(String, x) '取string左段x个字符组成的字符串

Right(String, x) '取string右段x个字符组成的字符串

Mid(String, start, x) '取string从start位开始的x个字符组成的字符串

UCase(String) '转换为大写

LCase(String) '转换为小写

Space(x) '返回x个空白的字符串

Asc(String) '返回一个 integer,代表字符串中首字母的字符代码

二,转换函数

CBool(expression) '转换为Boolean型

CByte(expression) '转换为Byte型

CCur(expression) '转换为Currency型

CDate(expression) '转换为Date型

CDbl(expression) '转换为Double型

CDec(expression) '转换为Decemal型

CInt(expression) '转换为Integer型

CLng(expression) '转换为Long型

CSng(expression) '转换为Single型

CStr(expression) '转换为String型

CVar(expression) '转换为Variant型

Val(String) '转换为数据型

Str(number) '转换为String

三,时间函数

Now '返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。

Date '返回包含系统日期的 Variant (Date)。

Time '返回一个指明当前系统时间的 Variant (Date)。

Timer '返回一个 Single,代表从午夜开始到现在经过的秒数。

Second(Time) '返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒

Minute(Time) '返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟

Hour(Time) '返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点

Day(Date) '返回一个 Variant (Integer),其值为 1 到 31 之间的整数,表示一个月中的某一日

Month(Date) '返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月

Year(Date) '返回 Variant (Integer),包含表示年份的整数。

Weekday(Date, [firstdayofweek]) '返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几

TimeSerial(Hour, Minute, Second) '返回一个 Variant (Date),包含具有具体时、分、秒的时间。

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) '返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目

四,Excel vba语句

.1.启用禁用事件

Application.EnableEvents = False

Application.EnableEvents = True

2. 启用禁用警告

Application.DisplayAlerts = False

Application.DisplayAlerts = True

3.取消复制选区

Application.CutCopyMode = False '

4.自动计算,禁用刷新

VBA通常在程序开始加两句:

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

在结尾处再恢复:

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

5. 状态栏进度

Sub Main()

Dim oldStatusBar

oldStatusBar = Application.DisplayStatusBar

Application.DisplayStatusBar = True

Application.StatusBar = "正在刷新..."

Application.StatusBar = "刷新完成!"

delay 2

Application.StatusBar = False

Application.DisplayStatusBar = oldStatusBar

End Sub

五,Excel单元格

1.最后一行/列

ActiveSheet.Range("A:A").Find(What: = "*", LookIn: = xlFormulas, SearchOrder: = xlByRows, SearchDirection: = xlPrevious).Row

ActiveSheet.Range("1:1").Find(What: = "*", LookIn: = xlFormulas, SearchOrder: = xlByRows, SearchDirection: = xlPrevious).Column

2.单元格复制粘贴

Sub RangeCopy()

Application.DisplayAlerts = False

Sheet1.Range("A1").CurrentRegion.Copy Sheet2.Range("A1")

Application.DisplayAlerts = True

End Sub

3.设置单元格格式

Public Sub RngFont()

With Range("A1").Font '对A1单元格进行字体设置

.Name = "华文彩云" 'Name属性返回或设置对象的名称

.FontStyle = "Bold"设置为”Italic”倾斜字体

.Size = 18 'Size属性返回或设置字体大小

.ColorIndex = 3 '该颜色可指定为当前调色板中颜色的编号

.Underline = 2 'Underline属性返回或设置应用于字体的下划线

End With

End Sub

六,Excel工作表

1.判断工作表是否存在

Sub CheckSheetExist()

Dim X As Integer

For X = 1 To Sheets.Count

If Sheets(X).Name = "A" Then

MsgBox "A工作表存在"

Exit Sub

End If

Next

MsgBox "A工作表不存在"

End Sub

2.插入工作表

Sub s2()

Dim sh As Worksheet

Set sh = Sheets.Add

sh.Name = "模板"

sh.Range("a1") = 100

End Sub

3.隐藏工作表

Sub s3()

Sheets(2).Visible = True

End Sub

4.移动工作表

Sub s4()

Sheets("Sheet2").Move before: = Sheets("sheet1") 'sheet2移动到sheet1前面

Sheets("Sheet1").Move after: = Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面

End Sub

5.检查工作表是否被保护

If ActiveSheet.ProtectContents Or ActiveSheet.ProtectDrawingObjects Then MsgBox "工作表已保护,本程序拒绝执行!", 64, "友情提示": Exit Sub

七,集合和数组

1.重新定义数组

ReDim Preserve

2.一维数组遍历

For i = LBound(aryData) To UBound(aryData)

aryData(i) = 1

Next

3.二维数组遍历

For i = LBound(aryData) To UBound(aryData)

For j = LBound(aryData, 2) To UBound(aryData, 2)

aryData(i, j) = 1

Next

Next

4.数组维度

Public Function NumberOfArrayDimensions(arr As Variant) As Integer

'计算数组维数

Dim Ndx As Integer

Dim Res As Integer

On Error Resume Next

Do

Ndx = Ndx + 1

Res = UBound(arr, Ndx)

Loop Until Err.Number <> 0

NumberOfArrayDimensions = Ndx - 1

End Function

八,文件操作

1.创建文件夹

Function MkDir2(path)

If Dir(path, vbDirectory) = "" Then

MkDir path '建立文件夹

End If

End Function

2.遍历当前文件夹文件

Function DirFiles(ByVal mypath, Optional ByVal fileStr = "*.*")

'返回一个数组2列 '1 列 -纯文件名+后缀 '2 列 -完整路径

'3 列 纯文件名 '4列 纯后缀 '本函数默认不搜索 隐藏文件

If mypath Like "*\" Then '总是把传进来的路径处理成不带斜杠的数据

mypath = Left(mypath, Len(mypath) - 1) '去掉最后的分隔符

End If

Dim dic

Set dic = CreateObject("scripting.dictionary")

Dim fname, k

fname = Dir(mypath & "\" & fileStr)

k = 0

Do While fname <> "" '不为空的时候 往下循环

k = k + 1

If fname Like fileStr Then '实现模糊搜索文件

dic(k) = fname '写入第一个文件

End If

fname = Dir

Loop

Dim brr

If dic.Count = 0 Then

ReDim brr(0, 0)

Else

ReDim brr(1 To dic.Count, 1 To 4) '1列纯文件名 2列完整文件名

For i = 1 To dic.Count

brr(i, 1) = dic(i) '纯文件名

brr(i, 2) = mypath & "\" & brr(i, 1) '完整路径+文件名

brr(i, 3) = Left(brr(i, 1), InStrRev(brr(i, 1), ".") - 1) '纯文件名

brr(i, 4) = Mid(brr(i, 1), InStrRev(brr(i, 1), ".") + 1) '路径

Next

End If

DirFiles = brr

'返回结果字典

End Function

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


原文链接:https://blog.csdn.net/Eternal_Whispers/article/details/127408782

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China&#39;s top diplomat to chair third China-Pacific Island countries foreign ministers&#39; meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...