vba常用代码总结
wptr33 2024-12-09 18:01 29 浏览
一,字符串操作
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
相关推荐
- Linux高性能服务器设计
-
C10K和C10M计算机领域的很多技术都是需求推动的,上世纪90年代,由于互联网的飞速发展,网络服务器无法支撑快速增长的用户规模。1999年,DanKegel提出了著名的C10问题:一台服务器上同时...
- 独立游戏开发者常犯的十大错误
-
...
- 学C了一头雾水该咋办?
-
学C了一头雾水该怎么办?最简单的方法就是你再学一遍呗。俗话说熟能生巧,铁杵也能磨成针。但是一味的为学而学,这个好像没什么卵用。为什么学了还是一头雾水,重点就在这,找出为什么会这个样子?1、概念理解不深...
- C++基础语法梳理:inline 内联函数!虚函数可以是内联函数吗?
-
上节我们分析了C++基础语法的const,static以及this指针,那么这节内容我们来看一下inline内联函数吧!inline内联函数...
- C语言实战小游戏:井字棋(三子棋)大战!文内含有源码
-
井字棋是黑白棋的一种。井字棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、三子旗等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时...
- C++语言到底是不是C语言的超集之一
-
C与C++两个关系亲密的编程语言,它们本质上是两中语言,只是C++语言设计时要求尽可能的兼容C语言特性,因此C语言中99%以上的功能都可以使用C++完成。本文探讨那些存在于C语言中的特性,但是在C++...
- 在C++中,如何避免出现Bug?
-
C++中的主要问题之一是存在大量行为未定义或对程序员来说意外的构造。我们在使用静态分析器检查各种项目时经常会遇到这些问题。但正如我们所知,最佳做法是在编译阶段尽早检测错误。让我们来看看现代C++中的一...
- ESL-通过事件控制FreeSWITCH
-
通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...
- 物理老师教你学C++语言(中篇)
-
一、条件语句与实验判断...
- C语言入门指南
-
当然!以下是关于C语言入门编程的基础介绍和入门建议,希望能帮你顺利起步:C语言入门指南...
- C++选择结构,让程序自动进行决策
-
什么是选择结构?正常的程序都是从上至下顺序执行,这就是顺序结构...
- C++特性使用建议
-
1.引用参数使用引用替代指针且所有不变的引用参数必须加上const。在C语言中,如果函数需要修改变量的值,参数必须为指针,如...
- C++程序员学习Zig指南(中篇)
-
1.复合数据类型结构体与方法的对比C++类:...
- 研一自学C++啃得动吗?
-
研一自学C++啃得动吗?在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C++的资料从专业入门到高级教程」,点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!个人...
- C++关键字介绍
-
下表列出了C++中的常用关键字,这些关键字不能作为变量名或其他标识符名称。1、autoC++11的auto用于表示变量的自动类型推断。即在声明变量的时候,根据变量初始值的类型自动为此变量选择匹配的...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- vba instr (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)