值得收藏的VBA编程常用代码

分享成果,随喜真能量。大家好,今天继续和大家分享VBA编程中常用的过程代码,过程代码在这里讲解的语句非常简单单一,简单的组合起来就是一个复杂的过程,也是一个学习的过程。

VBA过程代码36:返回系统的当前日期

Sub MyNZ()

Dim MyDate, MyDay

MyDate = Date

MyDay = Day(MyDate)

MsgBox MyDay

END SUB

代码的解析说明:上述代码过程在执行过程中,将弹出一个对话框提示当前的日期。其中Date是当前的日期,含年月日,Day(MyDate)是从上述的当前日期中提出日期。最后用MsgBox弹出对话框显示这个日期。

VBA过程代码37:返回系统的当前年份

Sub MyNZ()

Dim MyDate, MyYear

MyDate = Date

MyYear = Year(MyDate)

MsgBox MyYear

END SUB

代码的解析说明:上述代码过程在执行过程中,将弹出一个对话框,提示当前的年。其中Date是当前的日期,含年月日,Year(MyDate)是从上述的当前日期中提出年。最后用MsgBox弹出对话框显示这个年。

VBA过程代码38:返回系统的当前月份

Sub MyNZ()

Dim MyDate, MyMonth

MyDate = Date

MyMonth = month(MyDate)

MsgBox MyMonth

END SUB

代码的解析说明:上述代码过程在执行过程中,将弹出一个对话框,提示当前的月。其中Date是当前的日期,含年月日,month(MyDate)是从上述的当前日期中提出月。最后用MsgBox弹出对话框显示这个月。

VBA过程代码39:inputbox<输入框>

Sub MyNZ()

XX=InputBox (\”Enter number to add!\”)

END SUB

代码的解析说明:上述代码过程在执行过程中,将弹出一个输入对话框,提示输入的信息:\”Enter number to add!\” 最后用变量XX记录这个输入。

VBA过程代码40:得到一个文件名

Sub MyNZ()

Dim kk As String

kk = Application.GetOpenFilename(\”EXCEL (*.XLSM), *.XLSM\”, Title:=\”提示:请打开一个EXCEL文件:\”)

msgbox kk

END SUB

代码的解析说明:上述代码过程在执行过程中,将弹出一个打开的对话框,让用户选择某个文件,并用变量KK记录这个文件名,这个文件名是包含地址的FULLNAME。注意此时的代开对话框并不是真的打开这个文件。

看板:

下面是我根据我自己20多年的VBA实际利用经验,编写的几部经验教程,全是满满的\”干货\”,欢迎有需要的朋友联络(WeChat:NZ9668),分享。

1 《VBA代码解决方案》是VBA中各个知识点的讲解,覆盖了绝大多数的知识点。

2 《VBA数据库解决方案》是数据处理的利器;

3 《VBA数组与字典解决方案》中讲解VBA的精华—-字典。

4 面向初学及中级以下学员的视频《VBA代码解决方案》正在录制。看视频,\”每天20分钟,半年精进VBA\”活动正在火热进行中,越早报名,回馈越多。现在第一册48讲内容已经录制完成,第一阶段的优惠活动即将结束。

哪种编程语言最好用?是霸榜一年的Python,还是VB或者中文编程?

这个问题的答案,在每个年代都不一样。流行的编程语言一直在变,这就像是计算机世界的大事记。每种语言的流行,都跟电脑技术的发展紧密相关。正如古语所言,“时移世易”。

不过,当前最火的编程语言应该是Python,其代码简洁性使得在处理复杂的AI算法时,能够以较少的代码量实现更多的功能,大大提高了开发效率。因此,Python一直以来都是AI、数据分析、机器学习等领域的首选语言。

在十二月的TIOBE编程语言排行榜中,Python再次以绝对的优势领跑编程语言排行榜,市场份额高达23.84%,同比增长近10%。

TIOBE 12月TOP 10编程语言

而且,根据官方的预告,Python有望成为2024年的年度编程语言。

在这份榜单中,VB这个曾经的霸主如今却风光不再,排名持续下滑,市场份额仅为1.96%,几乎沦为边缘语言。

可能现在的年轻人对VB不太熟悉,“VB”只是一个简称,实际上它名字叫Visual Basic。

在我上大学那会,VB可是红得发紫。火到什么程度呢?这么说吧,对于那时候的大学生来说,计算机二级证书几乎是标配,大家都得考一个,VB就是很多人的首选。

哪怕是那些对编程一窍不通的文科学生,也能很快上手,用VB鼓捣个进销存或者财务管理软件,都是很轻松的事。

后来,随着互联网时代的到来,原本在电脑上风光无限的VB逐渐失去了光彩,Java的迅速蹿红更是给了VB致命一击。尽管微软后来推出了VB.NET,但似乎也无力回天,VB的黄金时期已经画上了句号。

前些年,微软宣布停止更新VB,我还担心无法使用,好在Win10仍兼容旧版VB程序,让我松了口气。

现在还会时不时翻出我的“HelloWorld”运行一番,仿佛回到了那个简单而纯粹的编程时代。

虽然VB已成往事,但Python的崛起让人看到了编程语言的无限可能。像中文编程,在易语言之后,又涌现出诸如“中蟒”、“周蟒”、“表格式中文编程”等新秀。

以表格式中文编程为例,它让软件开发变得跟用Excel一样简单,你只需画画表格,所见即所得,完全不用写一行代码,像MES、WMS、ERP、OA、SRM、进销存等,不会IT技术的业务员或管理者能轻松上手,快速搭建系统,大幅提升工作效率。

而且由于其内嵌了MySQL数据库,满足高并发,高可用的海量使用场景,很多业务员,都通过它来处理日常遇到的业务难题,比如消息推送、批量导入、权限管控、流程审批、标签自定义打印、BOM管理、智能仓储等等。

这使得中文编程在中小企业中迅速普及,成为提升业务效率的利器。

在70年代,为了应对电脑不同类型的事务,Pascal、C等特色语言应运而生。后来,随着电脑性能越来越好和互联网的兴起,就冒出了PHP、Java、JavaScript、VB、Python、HTML这些语言。到了现在,人工智能火起来了,Python这种代码简洁、跨平台、全能但不专精的语言就成了大热门。

现在回顾计算机语言的发展史会发现,编程语言会随着电脑性能的提升、互联网、人工智能等新科技的出现,而不断迭代更新,适应新的需求。

要是觉得内容对您有帮助,记得顺手点个赞哟~,大家有什么问题欢迎留言关注!

文:天地

vba常用代码总结

一,字符串操作

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

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。