VBA使用总结(3)

EXCEL VBA从入门到精通 第四章:EXCEL VBA 常量 在 Excel VBA 中,有一些预定义的错误常量可用于处理错误和异常情况。: 这是一个常量,可以用来表示对象错误的基本值。如果一个对象在执行期间出现错误,可以将此常量与自定义错误代码相加,以便在错误处理程序中处理它们。例如,可以使用将错误代码设置为1001。vbNull: 这是一个常量,表示一个空的对象引用。当需要清空一个对象时,可以将其设置为vbNull。vbEmpty: 这是一个常量,表示一个空的变量。如果一个变量尚未被初始化,那么它的默认值为vbEmpty。除此之外,还有其他的错误常量,如。 阅读详情
 □VBA基本类型转化

Val("&HFF") => 255

hex(255) => "FF"

LCase(hex(255)) => "ff"

Asc("a") => 97

Chr(97) => a

CStr(97) => "97"

 

□InStr 函数 : 一字符串在另一字符串中最先出?的位置。

InStr([start, ]string1, string2[, compare])

如果       InStr返回

string1 为零长度              0

string1 为Null         Null

string2 为零长度              Start

string2 为Null         Null

string2 找不到             0

在 string1 中找到string2    找到的位置

start > string2        0

 

更多使用方法参考【Microsoft Visual Basic 帮助】

 

□遍历字符串的每个字符

Dim str As String

Dim i As Integer

str = "test"

Dim ch As String

For i = 1 To Len(str)

   ch = Mid(str, i, 1)

   'todo with ch

Next i

 

□数组的起始和结束索引

Dim A(1 To 100) As String

LBound(A) => 1

UBound(A) => 100

 

注:若定义数组时,参数是变量,则应使用ReDim来定义数组

Dim max As Integer

max = 9

ReDim arr(0 To max) As Integer  ‘定义一个长度为10的数组

 

□集合(Collection)与数组

集合的索引从1开始

数组的索引从0开始

Dim coll

Set coll = New Collection ‘定义一个集合,索引从1开始

Dim arr(10) As Integer ‘定义一个长度为11的数组,索引从0开始

 

□使用字典(类似Java的HashMap)

Dim m

Set m = CreateObject("Scripting.Dictionary")

m.Add “key” “value”

m. Exists(“key”) ‘指定的关键字存在,返回 True,若不存在,返回 False

 

□通过Shell启动进程,并等待其结束。

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Const INFINITE = -1&

Public Const SYNCHRONIZE = &H100000

 

Dim i As Long

Dim p As Long

i = Shell("cmd /c ipconfig > c:\test.log", vbHide)

p = OpenProcess(SYNCHRONIZE, False, i)

WaitForSingleObject p, INFINITE

CloseHandle p

 

□异常的重新包装

Public Function doSth() As Boolean

On Error GoTo ErrorHandler

    …

    If condition_1 Then

        err.Raise 10001, , "error_message_1"

    End If

    …

    If condition_1 Then

        err.Raise 10002, , "error_message_2"

    End If

    …

    Exit Function

ErrorHandler:

    err.Raise err.Number, err.Source, "error_message"

End Function

 

 

□读文件

Dim file_name As String

file_name = "c:\test.log"

Dim fnum As Integer

fnum = FreeFile()

Open file_name For Input As #fnum

While Not EOF(fnum)

    Line Input #fnum, strLine

    'todo with strLine

Wend

Close #fnum

 

 

□创建建并写文件

Dim tmpFile As Object

Dim FSO As Object

 

Set FSO = CreateObject("Scripting.FileSystemObject")

Set tmpFile = FSO.CreateTextFile("c:\tmp.txt", True)

tmpFile.WriteLine ("line1" + vbCrLf + "line2")

 

Set tmpFile = Nothing

Set FSO = Nothing

 

□通过ODBC连接接数据及事务处理

       Dim conn As ADODB.Connection

       Set conn = New ADODB.Connection

       conn.ConnectionTimeout = 1 '1min

       conn.ConnectionString = "DSN=db_name;Uid=db_user;Pwd=db_pwd" ←DSN通过Windows ODBC数据源管理器配置。

       conn.Open

       conn.BeginTrans

On Error GoTo ErrorHandler

       conn.Execute insert_sql

       conn.Execute delete_sql

       conn.Execute update_sql

       conn.CommitTrans

       conn.Close

ErrorHandler:

       conn.RollbackTrans

       conn.Close

 

※ 使用Oracle DB_Link时,

若采用的驱动为Oracle in OraDb10g_home1时,连接字符串为

conn.ConnectionString = "DSN=db_name;Uid=db_user;Pwd=db_pwd;Omit Oracle Connection Name=True"

 

若采用的驱动为Microsoft ODBC for Oracle时,连接字符串为

conn.ConnectionString = "DSN=db_name;Uid=db_user;Pwd=db_pwd; "

 

3、开始使用VBA:Excel编程的入门指南 本博客是一篇关于VBA编程的入门指南,详细介绍了Excel中使用VBA进行自动化操作的基础知识。内容涵盖了宏的录制与编辑、简单的VBA代码编写、循环结构的应用、变量声明与优化、消息框和条件语句的使用、模块化编程、用户表单的设计以及VBA代码的密码保护等关键技术点。通过这些内容,读者可以快速掌握VBA的核心编程技术,并能够高效处理Excel数据和构建自定义应用程序。 阅读详情

相关推荐

改写Err.Raise,使之不弹出对话框只是中止程序.txt

如何改写Err.Raise,使之不弹出对话框只是中止程序 有个中止程序的问题困扰了我一个礼拜,始终没有相处解决方案,特来请教各位高手 背景: 1.目前我们公司的一套程序由于历史遗留问题,没有采用正规的函数返回值的方法来弹出报错对话框,而是使用了大量的Err.Raise 方法来弹出错误信息,用户点确定后,程序即中止,不在往下执行 2.目前我们需要在现在的代码上增加自动执行程序的功能,所以当程序遇到报错后,就弹出了这个对话框,需要人工去干预,不会自动中止

VBA错误处理

在(VBScript/VBA)编程中有三种类型的错误: 语法错误 运行时错误 逻辑错误 语法错误 语法错误(也称为解析错误)发生在VBScript的解释时间。 例如,下面一行导致语法错误,因为它缺少一个右括号。 Function ErrorHanlding_Demo() dim x,y x = "Yiibai Yiibai" y = Ucase(x End Funct...

Aroon_yuan的博客 3542

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 308

用err.raise自定义错误信息

我想大多数的人在编写ASP程序的时候,都碰到过类似的错误信息:    Error Number -> -2147467259    Error Source -> Microsoft OLE DB Provider for ODBC Drivers    Error Desc -> [Microsoft][ODBC Driver Manager] Data source name not f

明枫驿站 1698

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav...

vatxiongxiaohui的专栏 8万+

jQuery 版本怎么选?别一上来就用最新版,老项目里这个坑很常见

jQuery 是一个封装好的 JavaScript 函数库,简称 JQ它的核心理念是jQuery 有 1.x、2.x、3.x 三个主要版本系列2.0 以上版本不再支持 IE6、IE7、IE8版本选择不能只看“新不新”,而要看项目兼容性和实际需求.min.js是压缩版文件,生产环境常用使用 jQuery 前必须先通过<script>正确引入基本就是没引入或引入失败可以快速绑定点击事件.animate()可以快速实现动画效果,但定位属性要设置好。

Web安全工具库 387

VBA学习笔记二:常用语句

VBA学习笔记二:常用语句。首先介绍了在VBA中一段代码的开始与结束需要怎么编写,代码的写入位置和调用方法;然后整理了一些VBA中常用语句的语法、功能以及相关示例,主要包括:条件语句、循环语句、流程控制语句、错误处理语句和WIth语句。

gogoel的博客 3946

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

vba查询输入的值是否在某列中存在_Excel教程 VBA的秘密武器

01 应用场景场景:碰到一个Excel表,大概有50万行的数据,手头有差不多1万个待查询的信息,需要到50万行数据中去匹配。用了Excel自带的vlookup,大概要等5分钟才能将1万行的数据匹配好。根据每个人使用电脑的不同,耗时可能有些出入。但更多的时候,我们要查询数据往往超过1万行,而Excel的支持就不那么友好了。02 介绍今天我来介绍下VBA的秘密武器——字典。可能跟想象的不太一...

weixin_39615984的博客 4835

金智维KRPA实战:Excel自动化数据处理全流程解析

本文详细解析了金智维KRPA在Excel自动化数据处理中的全流程应用,涵盖COM接口和文件读写两种核心技术方案,以及销售报表生成、数据清洗和可视化仪表盘等实战案例。通过企业级应用的异常处理、性能优化和安全合规实践,显著提升数据处理效率和准确性,助力企业降本增效。

weixin_30329623的博客 598

基于上下文的 Listwise 重排模型(一):miRNN

2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。

进一步有进一步的欢喜~ 1918

switch vba_VBA中使用的3种选择函数,分别是IIf、Switch和______。

VBA中使用的3种选择函数,分别是IIf、Switch和______。更多相关问题[名词解释] 血管内溶血[问答题,简答题] Ham试验的原理和应用如何?[问答题,简答题] 何为小细胞性贫血?哪些贫血属小细胞性贫血?[名词解释] 不稳定血红蛋白病[名词解释] 干抽[名词解释] 自身免疫性溶血性贫血[名词解释] 总铁结合力[问答题,简答题] 简述成人贫血程度分级标准。[问答题,简答题] 缺铁性贫血的...

weixin_39854867的博客 1009

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

他山之石——VBA数组的使用-Part3(VBA Array)

学习任何东西,往往坚持到最后,才能学到“干货”。试想,如果新手两三下就能学会的东西就能在现实中排上大用场,那老手还有存在的必要吗?Option Explicit ' '1、数组的最值 Sub s() Dim arr1() arr1 = Array(1, 12, 4, 5, 19) MsgBox "1, 12, 4, 5, 19最大值" &amp...

预见未来to50的专栏 2731

android 如何分析应用的内存(十六)——使用AS查看Android堆

在前面,先介绍了如何使用jdb和VS code查看应用栈相关内容。本文将介绍,如何查看堆中的内容。

安仔的博客 4254

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用VBA在Office中输入特殊字符(3/3)

在博文《使用VBA在Office中输入特殊字符(1/3)》中我们知道月亮符号的字符代码为0x1F319。本文讲解如何计算特殊字符对应的Byte数组的值。

神奇的BI 3657

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

使用VBA在Office中输入特殊字符(1/3)

有个网友希望使用代码输入如下“月亮”字符,从截图中可以看出其字体是Segoe UI Symbol。如果文件中已经有这个字符,当然最简单的方法就是复制/粘贴,可以如果空白文档,那么该如何输入呢?是否可以使用VBA代码直接输入这个特殊字符?

神奇的BI 6712

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

他山之石——使用VBA字典-Part3

这部分算是VBA字典的高级用法了,竟然可以实现透视表功能,确实很强大!Sub 下棋法之多列汇总() Dim 棋盘(1 To 10000, 1 To 3) Dim 行数 Dim arr, x, k Dim d As New Dictionary arr = Range("a2:c" &amp; Range("a65536").End(xlUp).Row) For x = 1 To UBo...

预见未来to50的专栏 1276

使用VBA在Office中输入特殊字符(2/3)

在上一篇博文《使用VBA在Office中输入特殊字符(1/3)》中使用Byte数组实现了输入特殊字符,但是如果获得代表特殊字符的Byte数组的值呢?其实也不复杂。

神奇的BI 1721

VBA进度条ProgressForm3

ProgressForm3是VBA模拟进度条的窗体,它是采用动态改变Label标签控件填充字符的个数来模拟进度条,样式看起来跟PregressBar控件很像。设计方法如下:

531

使用VBA快速删除数据行(3/3)

本文介绍了如何使用VBA代码删除Excel中Amount列(第2列)为零的数据行。代码通过将数据加载到数组中进行处理,保留满足条件的行,最后清空原表并写入结果数据。关键点包括:使用CurrentRegion获取数据范围、数组遍历筛选、Resize方法调整结果区域大小。文章还提示了需注意格式处理的问题,并为不熟悉数组操作的读者提供了替代方案建议。代码结构清晰,适合批量处理数据需求。

神奇的BI 721

使用VBA操作文件(3):Windows Scripting Host

转贴自  http://www.excelperfect.com/2009/08/11/handlefileswithvba3/使用VBA操作文件(3):Windows Scripting Host Windows ScriptingHost,简称为WSH,是一种脚本语言,可以自动运行命令,能够控制Windows操作系统和应用程序,也能够从操作系统中获取信息。WSH是名为w

icecityman的专栏 1001

VBA每日一练(24)在VBA里,3种方法,使用fso 如何统计 某种后缀名类型的文件数量

fso统计文件数量 fso统计文件数量,如果不区分文件类型,可以非常方便 fso.getfolder().files.count 但是fso统计某种类型的文件数量,需要遍历才行 可以用 for each 遍历 最准的方法是用 fso.getExtensionName() = "" 来判断 用 right(filename,3)="" 得明确的知道 后缀名位数,一般是知道是哪种...

奔跑的犀牛先生 2035

使用VBA快速删除数据行(2/3)

本文提供了一个Excel VBA代码示例,用于删除数据表中Amount列(第2列)值为零的所有行。代码先将数据表加载到数组中,通过循环判断条件并收集符合条件的单元格,最后一次性删除所有符合条件的整行数据。相比逐行删除的方法,这种批量操作方式能显著提高代码执行效率,减少资源消耗。代码包含详细注释,便于理解每个步骤的功能实现。

神奇的BI 406

使用VBA快速删除数据行(1/3)

文章摘要:本文介绍了如何使用VBA宏代码删除Excel中Amount列为零的数据行。关键点包括:1)使用End属性获取总行数;2)采用倒序循环(Step -1)避免删除行导致的行错位;3)通过Application.ScreenUpdating提升执行效率。示例代码展示了从下到上遍历并删除B列值为零的行的具体实现方法,适用于批量清理数据表的场景。

神奇的BI 425

vba代码使用:在同组编号的最后一行插入3条空白行并求和

是 → 当前行是组尾吗?→ 否 → 继续检查下一行。插入3个空行 → 在空行处写求和公式 → 更新行号计数器(跳过空行)继续循环,直到所有行处理完毕。开始 → 定位数据末尾 → 开始循环巡逻每一行。

2501_93372237的博客 549
上一篇: VBA学习总结(2)
下一篇: VBA使用总结(Oracle使用)
kdevn
博客等级 码龄21年 5粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值