当前位置:文档之家› VBA 处理网页基础一

VBA 处理网页基础一

VBA 处理网页基础一
VBA 处理网页基础一

VBA的WEB应用系列教程

——HTTP通讯基础篇

VBA的WEB应用教程,预计按以下几方面进行发布,敬请期待:

(1)HTTP通讯基础篇:主讲INTERNET通讯基础知识、网络数据包构成、HTTP协议简介、收发包工具使用技巧和初步在VBA中进行收发包。

(2)网页元素分析基础篇:主讲XHTML元素基础知识、HTML DOM基础知识、网页元素分析工具使用技巧和初步使用VBA进行网页操控。

(3)QUERYTABLE篇:主要介绍EXCEL自带导入网页数据对象QUERYTABLE的主要属性和方法,如何运用它导入网页数据。

(4)抓包控件篇:主讲XMLHTTP、WINHTTP、inet控件和WINSOCK控件基础知识、运用技巧和程序模板。

(5)页面控制和数据提取篇:主讲WEBBROWSER控件的基础知识和页面控制技巧,讲解如何从网页页面上提取所需的表单数据,赠送程序模板。

(6)文本处理和补遗篇:主讲文本处理技巧、文本内码转换、URL内码转换、补充ADO Stream对象在WEB方面的应用、XML数据交互、WEB服务和服务器推送机制等知识补遗。

(7)数据提取和数据防盗的博弈:主要介绍几种常见的网络数据防盗的情形,并探讨如何破解思路。

(8)JAVASCRIPT篇:高阶教程,主要简介JAVASCRIPT基础知识,以及MSScriptControl对象主要属性和方法,VBA如何解析json序列。

以下开始第一篇的正文:

一、网络通信基础知识串讲

网络通俗的说,是能上网的计算机的集合。计算机彼此不同,它们如何进行通讯呢,通过什么规则来通信呢。通过TCP/IP等标准协议,它允许我们的电脑,通过互联网直接和另一台电脑进行通讯。请注意,TCP/IP一般只是底层协议(传输层),可以简单理解为它只是提供计算机设备之间的底层通讯接口,其他例如软件方面的对接,还需要高层协议,后面我们会讲到。

有了通讯的规则,那计算机硬件方面是怎么互相识别呢。他们是通过数字地址,即我们通常说的IP,就像百度的IP就是119.75.217.56,我们可以在浏览器地址栏键入119.75.217.56也可以对百度进行访问。这一串数字实在不好记啊,所以就有了域名, https://www.doczj.com/doc/336974506.html,。用域名通讯的时候,域名要先经过互联网上的域名服务器(DNS)进行转换,转成IP地址,再进行访问。

网络上的两台计算机通讯,很多情况,一台是我们这些客户机,另外一台是提供信息的服务器。客户机需要浏览网页资讯的时候,是通过我们机子上安装的浏览器,例如IE、FIREFOX等,向服务器发送请求,服务器响应浏览器的请求,将相关的信息回传给我们的浏览器,浏览器进行识别和翻译,展现出来大量的文本或图片等,来供我们查看。

请注意,一般而言,通讯是静态的。服务器在等待浏览器的请求之前,是不会主动做任何事情的。现在页面很多动态实时的效果,其实还是我们浏览器,不停的向服务器发送请求,服务器返回消息再更新页面的结果,例如AJAX技术;或者是首次请求后,通讯并没有断开,服务器源源不断的往浏览器发送更新数据,这就是传说中的长连接技术。

服务器能识别我们的请求,我们的浏览器,也能翻译或解释那些服务器返回的数据或文档,那彼此之间的通讯格式,还需要一个协议去规范的。这就是我们常说的超文本传输协议——HTTP。HTTP协议就是用于客户端和服务器之间的文档或数据

的交互的。请注意,这里的文档指的不仅是文本,还可能是图片、视频或音频,或者是指向到其他文档的嵌入式链接,因此叫超文本。

一般情况,当我们的浏览器,通过域名,访问了某个服务器,一般会进到服务器的门户主页面中。当我们点击门户页面的某个超链接或者点击某个提交按钮后,要求服务器进一步返回我们需要的某个资源文档,或者执行我们提交给它的某些命令时(例如成绩查询)。其实,我们刚才点击的超链接或按钮,就蕴含着我们要获取的文档或者执行程序的路径,这个路径统称URL——统一资源定位符。

HTTP通讯中,这个路径的格式一般为:HTTP://域名:端口/文档或程序的全路径?参数。端口就是服务器某个特定进程来处理客户端发来的消息,默认为80,可以先不用去理解这个名词。文档或程序路径是相对路径。服务器也是一台计算机,上面除了存放资源文件,还存放着维护服务器的软件,因此资源文档可能并不存放在其根目录上。例如,可能我们的资源文档根目录是服务器上/admin/web这个目录,那http://域名/news/weather.html其实访问的就是服务器根目录下

/admin/web/news/weather.html这个文件。最后的?参数,是可选的,用于传递浏览器向服务器发送的请求参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开,例如:https://www.doczj.com/doc/336974506.html,/s?ie=utf-8&wd=苹果,就是浏览器向百度服务器发送查询参数,查询关键字是苹果的数据,并请求按utf-8的内码进行返回。请注意,URL里面有时候是不支持英文和数字以外的字符的,这时候就需要URLENCODE的函数去转换了,后话,以后会讲。

综上所述,一句话而言,服务器接收浏览器发来的HTTP请求,并翻译识别请求中的消息并进行权限校检,进而识别请求中的URL并翻译成服务器的一个文档名称(找到它并按请求的内容进行返回)或程序名称(传递参数按请求的规定执行它并将结果返回)。

二、HTTP协议简析

基本上,大部分的web通讯,都是使用http协议。我们用下面的图,复习下通讯的流程(客户端发起请求,服务器回送响应):

(1)首先客户机与服务器建立连接。

(2)建立连接后,客户机通过HTTP协议发送一个请求给服务器。

(3)服务器接到请求后,给予相应的响应信息。

(4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

从流程上,可以看出,它由请求和响应构成。通讯的每次请求或相应中,都包含着两个部分:头部和主体。头部包含了构建通讯所需的信息/命令;主体包含了通信传递的数据,头部和主体之间间隔一个VBCRLF。我们还是通过,FIDDLER这个抓包软件来进行讲解,请上https://www.doczj.com/doc/336974506.html,/Fiddler2/version.asp进行下载。

举例说明如下,请在浏览器地址栏键入:

https://www.doczj.com/doc/336974506.html,/lz/etpsInfo.do?method=index,出现企业登记信息查询的页面,选择按注册号查询,并将310115*********输入至下方的文本框中。如图

所示:

这时,我们先打开FIDDLER,然后再按下网页的搜索按钮。这样,FIDDLER就

可以捕捉到,执行搜索的HTTP请求,还能截取到查询结果的响应消息。我们分阶

段进行解析。

(一)请求阶段

如图操作,选择第一条记录,有时候就是发送查询命令的HTTP请求。选择左

边的INSPECTORS的RAW标签,就可以看见HTTP请求的内容。

POST https://www.doczj.com/doc/336974506.html,/lz/etpsInfo.do?method=doSearch HTTP/1.1 Host: https://www.doczj.com/doc/336974506.html,

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101

Firefox/14.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

DNT: 1

Connection: keep-alive

Referer: https://www.doczj.com/doc/336974506.html,/lz/etpsInfo.do?method=index

Cookie: JSESSIONIDlz=00002DNpApMXAw1wHVO0vSgVGuf:16f9u5edl;

JSESSIONID=0000g4T4RXnmmvxkZ2Vi0rZy3fM:132eapo0d

Content-Type: application/x-www-form-urlencoded

Content-Length: 37

searchType=2&keyWords=310115*********

实际情况中,有可能会看到一系列的发包记录,那实际的获取数据的发包请求

又是哪一条呢?一般不用一个个记录去看,我们可以选取结果页面的一个标识语句(例如“搜索结果”啊,“注册成功”啊,这样的标示语句),在FIDDLER界面按

住CTRL+F,会出现查找功能的界面,然后键入我们要查找的标识,如图,就可以搜

索出到底是哪条记录。

从上面的RAW标签,可以看出,HTTP请求的通用格式:

HTTP方法 URL或URL的路径部分 HTTP协议版本

头部字段

回车换行

消息主体

下面按照该格式的每个条目进行解释:

1、首行的HTTP方法,就是请求的方法,总共有5种,但是常用的就GET和POST,GET是索取数据的请求,要求服务器返回URL指定的文档内容,或返回URL指定的数据处理过程的结果所指向的文档,是最常见的。POST是向服务器提交数据的请求,要求服务器接收并利用随附的消息主体的数据,来执行某个程序或获取文档,通常用于浏览器向服务器发送表单数据,例如提交注册信息,或者进行数据查询等。所以,如果采用GET方式,一般消息主体为空,采用POST方式的话,一般就有相应的消息主体。

请注意,并不意味着采用GET方式就不能携带数据了,上一节我们说了,URL

是可以携带我们需要传递给服务器的参数的。例如https://www.doczj.com/doc/336974506.html,/s?wd=苹果。可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

那既然GET方式也可以携带参数,那两者区别又是什么呢?一是安全性,GET 方式参数就在URL,提交的是密码等私密资料就不合适用GET;二是,GET方式提交的数据最多只能有1024字节,而POST则没有此限制。三是,GET一般不能改变服务器的数据,而POST可以改变服务器的数据,例如注册了个用户,服务器就多了数据条目。

2、头部字段,头部字段主要描述的是我们的请求的内容,绝大部分是可选的。格式为“字段名称:字段值”,以下列举几个常用又比较重要的头部字段吧,其他请自行参阅HTTP协议:

2.1 host字段:该字段指定请求资源的Intenet主机和端口号,即URL的域名部分,HTTP/1.1请求必须包含该字段。

2.2 Referer字段:Referer字段值,就是我们发起HTTP请求时的那个页面URL,是用来控制盗链的一种方式。

2.3 User-Agent字段:该字段的内容包含发出请求的用户信息(浏览器和系统等消息)。有时候也会作为放盗的一种方式,更多用来服务器判定依据不同用户系统情况,返回不同的兼容文档。

2.4 Cache-Control字段:用来指定请求遵循的缓存机制。包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached等。

2.5 Cookie字段:这是比较重要的请求头信息之一;这个我们后面详细说,先跳过。

2.6 If-Modified-Since字段:所请求的页面在客户端的缓存中的最近更新时间;

2.7 Pragma字段:指定“no-cache”值表示服务器必须返回一个刷新后的文

档,即使它是代理服务器而且已经有了页面的本地拷贝;

2.8 Content-Type字段: 在使用POST方式的时候,这个字段非常关键,用来标识后附的消息主体的类型。作为抓包爱好者,理解不了就算了,写程序的时候,直接抄袭抓包软件看到的,例如上面例子的是

“application/x-www-form-urlencoded”。一般POST方式,这句较少省略,如果不附上,就得不到正确的数据结果。

2.9 Content-Length字段:表示HTTP请求的消息主体的文本长度

2.10 If-None-Match字段:后面储存的是客户端读取的缓存中页面的缓存检验值,后面缓存中再讲;

(3)当采用POST方式,就会携带消息主体了,这时,头部和主体之间的回车换行的标示符号,就必不可少了。主体就是请求通信传递的数据,上例中的主体内容“searchType=2&keyWords=310115*********”就是传递我们查询所需的注册号和查询方式(按注册号查询)等参数,和GET方式一样,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

请注意,发包的整个过程,例如消息主体,都不支持英文和数字以外的字符,如果要写入中文或特殊字符,就需要URLENCODE的函数进行转码了。后话,心急的读者自行百度,VBA URLENCODE。

(二)响应阶段

当我们发送请求后,服务器处理完我们的请求,就会向我们的浏览器,发送响应消息了。FIDDLER中,响应消息就在请求消息的下面,一样看RAW标签,如图:

HTTP/1.0 200 OK

Date: Sun, 22 Jul 2012 06:46:31 GMT

Server: IBM_HTTP_Server

Content-Length: 8292

Content-Type: text/html; charset=UTF-8

Content-Language: zh-CN

Age: 312

X-Cache: MISS from WebAudit

Connection: keep-alive

"https://www.doczj.com/doc/336974506.html,/TR/xhtml1/DTD/xhtml1-transitional.dtd">

………

HTTP响应消息的格式如下所示:

状态行

头部字段

回车换行

实体内容

1、状态行 = HTTP协议 [空格] 状态码 [空格] 状态解释 [回车换行]

状态码常见的就是,200成功、400错误请求(一般我们是发送的请求有问题)、500服务器错误,其余不说明了,自行搜索百度哈。

2、头部字段

响应阶段的头部字段主要描述的是服务器响应的情况。最常见的头部字段如下:

2.1 Content-Type:表示后面的文档属于什么类型;

2.2 Expires:指明应该在什么时候认为文档已经过期,从而不再缓存它。

2.3 Last-Modified:文档在服务器上最后更新时间。同缓存一起保存这个值,当再次访问该页面,在请求的头部字段的If-Modified-Since中再次携带这个时间值发送至服务器,如果服务器此时的文档更新时间晚于该时间,返回新页面数据,否则返回一个304(Not Modified)状态,并加载缓存数据进行显示;

2.4 Set-Cookie: 服务器向客户端发送的cookie,cookie后面简析。

2.5 ETag:一段文本,一般也是用于缓存是否更新的判断的校检值,当首次

访问页面时候,获取这个值,同缓存一起保存,当再次访问时候,请求阶段的

If-None-Match字段就会再次携带这段校检值发送至服务器,服务器判断ETag校检值是否变化,变化则返回新的页面数据,无变化则返回304,读取缓存数据显示。

3、和请求阶段一样,头部和实体之间用回车换行符间隔,后面的实体,就是服务器返回的网页的源代码了。视服务器文档情况,大部分情况是html格式的,这个东东,我们第二节课再讲咯。

(三)初识cookie和session

由于第一节讲了,网络通讯是静态的,http协议是无状态的。它对于我们之前的所有通讯都没有记忆能力。那出现的问题是,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,就难以验证用户的权限和登录问题。于是,两种用于解决机制就产生了,就是Cookie和Session。

Cookie是通过客户端记录通讯情况,其是由服务器发给客户端的特殊信息,以文本文件的方式存放在我们的电脑上(WINDOWS系统哈,浏览器会将这些信息存放在[系统盘]:\Documents and Settings\[用户名]\Cookies目录中),然后我们的浏览器每次向服务器发送请求的时候就会带上这些特殊的信息。例如,当我们登录网站时,服务器会发送一段cookie给我们,这就是我们在上面的响应阶段所说的

Set-Cookie头部字段的功能,后续的通讯,在请求阶段,就会使用cookie请求字段,发送这段文本,服务器收到了这段文本,就知道我们已经登录了。

另外一个解决方案是Session,它是通过服务器来记录通讯情况。Session指

的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。当我们的浏览器首次访问或者登录服务器时,服务器就创建一个session,服务器会为该Session生成唯一的Session id,这个session id将从URL或者从cookie 返回客户端,以后的HTTP请求,从cookie或者URL附上Session id,服务器接受到请求之后就会依据Session id找到相应的Session,这样,用户的状态也就记忆了。

(四)初识缓存(cache)

缓存(cache)保存在客户端上的。当我们首次访问某个页面时,浏览器会自动保存这个页面的部分内容,例如html页面,图片等,当下一次再次访问时,缓存直接使用之前保存的数据响应访问请求,而不是向服务器再次发送请求。这样大大的节约了访问的时间。

一般缓存判断的常见流程如下:客户端首次访问服务器后,服务器会返回该页面的Last-Modified或ETag字段值,客户端将该页面数据保存在cache中,并记录这两个属性。当客户端再次访问这个页面,请求阶段的消息,会在

If-Modified-Since(对应Last-Modified)或If-None-Match(对应ETag)两个字段中携带之前在cache中保存的Last-Modified或ETag的属性值。服务器通过判断这个两个属性,判断页面是否发生变化,如无变化,客户端不需要重新下载,返回304响应。

其他的判断方式还有使用Expires的头部字段,该字段给了一个文档的有效期,过了这个有效期,就必须重新下载。

三、如何模拟HTTP请求

(一)在FIDDLER中模拟

在第二节的第一点,我们抓取了,用注册号,查询企业注册信息的HTTP请求,

我们怎么模拟它呢?可以在FIDDLER中进行模拟,首先复制一下,第二节第一点中,我们在INSPECTORS选项卡中ROW标签得到的HTTP请求,然后选择composer选项卡RAW标签或者PARSED标签,填入我们所要发送的HTTP请求,之前也所过了,很多字段其实是可选的,经过删减测试,最终必须的字段如下图:

然后按右上的EXECUTE按钮,就可以发送请求了,然后继续在左边界面和INSPECTORS选项卡中观看是否成功。

(二)VBA中模拟

当在FIDDLER中模拟成功后,我们就可以把相关的HTTP请求,在VBA中,套用在XMLHTTP对象上。后面的课程会详细讲这些对象的属性和方法,本次仅是演示,代码如下:

Option Explicit

Sub test()

With CreateObject("Microsoft.XMLHTTP")

.Open "POST",

"https://www.doczj.com/doc/336974506.html,/lz/etpsInfo.do?method=doSearch", False .setRequestHeader "content-type",

"application/x-www-form-urlencoded"

.SEND "searchType=2&keyWords=310115*********"

Debug.Print .responsetext

End With

End Sub

上述代码,仅仅模拟了HTTP请求的过程,在立即窗口输出的是网页的源代码,后面还需加工处理,以后我们的课再说,其他有一定基础的同学,可以运用正则等对象或文本处理函数,进行相关处理,获取我们所需的东东。还有转码的东西,不要急,后面也会说。还有,我们的浏览器,是怎么把这一大堆源代码,翻译成直观的东西的,下节课就会说了。

不要小看上面这些通讯原理,没有他们,是肯定没法学好后面的内容的,特别是,网页数据防盗的破解的。

最后,小技巧,POST和GET不一定是绝对的,嘿嘿,有时候,POST的消息主体的内容,加个“?”号带到URL后边当参数,也是可以获取正确的码源的,呵呵。这个读者自己去领悟吧,哈哈。上面那个案例是不行噢,只能POST,不能用

https://www.doczj.com/doc/336974506.html,/lz/etpsInfo.do?method=doSearch&

searchType=2&keyWords=310115*********去get,我遇到很多情况是可以的,自己找其他页面测试,哈。

附加阅读材料(网上搜的,用于扩展理解):

http代理

1. http代理服务器

代理服务器就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。

代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,请求信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

2 http代理服务器的主要功能

1)突破自身IP访问限制,访问国外站点。

2)访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务;

3)突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国外的代理服务器试试;

4)提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度;

5)隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

3 http代理图示

VBA常用代码大全

.、八、- 刖言 我们平时在工作表单元格的公式中常常使用函数,EGcel自带的常用的函数多达300多个, 功能强大,丰富多彩,但是在 VBA中不能直接应用,必须在函数名前面加上对象,比如:Applicatio n. WorksheetF un ctio n.Sum(arg1,arg2,arg3) 。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数, 以供大家学习参考。 第1.1例ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”EGcel”的首字母和” e”的ASCII值。 二、代码: Sub 示例_1_01() DimmyNum1%,myNum2% myNum仁Asc("EGcel")'返回 69 myNum2=Asc("e")' 返回 101 [a1]="myNum 1=":[b1]=myNum1 [a2]="myNum2=":[b2]=myNum2 En dSub 三、代码详解 1、Sub示例_1_01():宏程序的开始语句。 2、DimmyNum1%,myNum2% :变量 myNum1 和 myNum2 声明为整型变量。 也可以写为DimmyNum1AsInteger 。Integer变量存储为16位(2个字节)的数值形式,

其范围为-32,768到32,767之间。Integer的类型声明字符是百分比符号(%)。 3、myNum1=Asc("EGcel"):把 Asc 函数的值赋给变量 myNum1 。 Asc函数返回一个Integer,代表字符串中首字母的字符的 ASCII代码。 语法 Asc(stri ng) 必要的string (字符串)参数可以是任何有效的字符串表达式。如果string中没有包含任何字符,则会产生运行时错误。 4、myNum2=Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e的ASCII 代码101。 5、 [a1]="myNum仁":[b1]=myNum1 :把字符串“ myNum仁“赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、 [a2]="myNum2=":[b2]=myNum2 :把字符串“ myNum2= “赋给 A2 单元格,把变量myNum2的值赋给B2单元格。 7、 EndSub :程序的结束语句,和“ Sub示例_1_01 ()”相对应。 第1.2例Chr函数 一、题目"": 要求编写一段代码,运用 Chr函数将ASCII值转换为对应的字符 二、代码: Sub 示例_1_02() DimmyChar1$,myChar2$ myChar仁Chr(69)'返回 E。 myChar2=Chr(101)' 返回 e。 [a1]="myChar1=":[b1]=myChar1 [a2]="myChar2=":[b2]=myChar2

C字符串处理函数全

strcpy(char destination[], const char source[]); strcpy:将字符串source拷贝到字符串destination中。 strcpy函数应用举例 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中 例程: #include #include void main(void) { char str1[10] = { "TsinghuaOK"}; char str2[10] = { "Computer"}; cout < #include void main(void) { char str1[10] = { "Tsinghua "}; char str2[10] = { "Computer"}; cout <

VBA函数大全

Abs函数 返回参数的绝对值,其类型和参数相同。 Array函数 返回一个包含数组的Variant。 Asc函数 返回一个Integer,代表字符串中首字母的字符代码。Atn函数 返回一个Double,指定一个数的反正切值。CallByName函数 执行一个对象的方法,或者设置或返回一个对象的属性。Choose函数 从参数列表中选择并返回一个值。 Chr函数

返回String,其中包含有与指定的字符代码相关的字符。Cos函数 返回一个Double,指定一个角的余弦值。CreateObject函数 创建并返回一个对ActiveX对象的引用。CurDir函数 返回一个Variant(String),用来代表当前的路径。CVErr函数 返回Error子类型的Variant,其中包含指定的错误号。Date函数 返回包含系统日期的Variant(Date)。

DateAdd函数 返回包含一个日期的Variant(Date),这一日期还加上了一段时间间隔。DateDiff函数 返回Variant(Long)的值,表示两个指定日期间的时间间隔数目。DatePart函数 返回一个包含已知日期的指定时间部分的Variant(Integer)。DateSerial函数 返回包含指定的年、月、日的Variant(Date)。DateValue函数

返回一个Variant(Date)。 Day函数 返回一个Variant(Integer),其值为1到31之间的整数,表示一个月中的某一日。 DDB函数 返回一个Double,指定一笔资产在一特定期间内的折旧。可使用双下落收复平衡方法或其它指定的方法进行计算。 Dir函数 返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 DoEvents函数

各种字符串处理函数示例(基本)

示例 1.字符串输出示例。 程序: #include void main(void) { char str[25]={"Welcome to our city!"}; puts(str); puts("Thank you!"); } 结果: 2.字符串输入实例。(注意比较gets与scanf和puts与printf的区别)程序: #include void main(main) { char str[20]; gets(str); puts(str); printf("*********\n"); scanf("%s",str); puts(str); } 结果: 3.测字符串长度函数strlen()的使用。 程序: #include #include void main(main) { char a[10]="program";

int x,y; x=strlen(a); y=strlen("abc13"); printf("%d\n%d\n\n",x,y); } 结果: 4.字符串连接函数的使用。 程序: #include #include void main(main) { char s1[20]="Hello",s2[6]="Word"; puts(s1); puts(s2); strcat(s1,s2); printf("%s\n",s1); } 结果: 修改后 程序: #include #include void main(main) { char s1[5]="Hello",s2[6]="Word"; puts(s1); puts(s2); strcat(s1,s2); printf("%s\n",s1); } 结果:

VBA函数大全自己的

V B A函数大全自己的公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

Abs函数 返回参数的绝对值,其类型和参数相同。 Array函数 返回一个包含的。 Asc函数 返回一个,代表字符串中首字母的。 Atn函数 返回一个,指定一个数的反正切值。CallByName函数 执行一个对象的方法,或者设置或返回一个的属性。Choose函数 从列表中选择并返回一个值。 Chr函数 返回,其中包含有与指定的相关的字符。 Cos函数 返回一个Double,指定一个角的余弦值。CreateObject函数 创建并返回一个对的引用。

CurDir函数 返回一个Variant(String),用来代表当前的路径。 CVErr函数 返回Error子类型的,其中包含指定的。 Date函数 返回包含系统日期的Variant(Date)。 DateAdd函数 返回包含一个日期的Variant(Date),这一日期还加上了一段时间间隔。DateDiff函数 返回Variant(Long)的值,表示两个指定日期间的时间间隔数目。DatePart函数 返回一个包含已知日期的指定时间部分的Variant(Integer)。DateSerial函数

返回包含指定的年、月、日的Variant(Date)。 DateValue函数 返回一个Variant(Date)。 Day函数 返回一个Variant(Integer),其值为1到31之间的整数,表示一个月中的某一日。 DDB函数 返回一个,指定一笔资产在一特定期间内的折旧。可使用双下落收复平衡方法或其它指定的方法进行计算。 Dir函数 返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 DoEvents函数 转让控制权,以便让操作系统处理其它的事件。 Environ函数 返回String,它关连于一个操作系统环境变量。在Macintosh中不可用

VB常用字符串操作函数解读

VB常用字符串操作函数2009/11/25 18:321. ASC(X,Chr(X:转换字符字符码[格式]: P=Asc(X 返回字符串X的第一个字符的字符码 P=Chr(X 返回字符码等于X的字符 [范例]:(1P=Chr(65 ‘ 输出字符A,因为A的ASCII码等于65 (2P=Asc(“A” ‘ 输出65 2. Len(X:计算字符串X的长度 [格式]: P=Len(X [说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算 一个字符。 [范例]: (1 令X=”” (空字符串 Len(X 输出结果为0 (2 令X=”abcd” Len(X 输出结果为4 (3 令X=”VB教程” Len(X 输出结果为4 3. Mid(X函数:读取字符串X中间的字符 [格式]: P=Mid(X,n 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为 P=”bcde” 4. R eplace: 将字符串中的某些特定字符串替换为其他字符串 [格式]: P=Replace(X,S,R [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]:X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串 [格式]: P=StrReverse(X [说明]:返回X参数反转后的字符串 [范例]:(1)X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase(X,Lcase(X:转换英文字母的大小写 [格式]:P=Lcase(X ‘ 将X字符串中的大写字母转换成小写P=Ucase(X ‘ 将X字符串中的小写字母转换成大写 [说明]:除了英文字母外,其他字符或中文字都不会受到影响。 [范例]:(1)令X=”VB and VC” 则Lcase(X的结果为”vb and vc”,Ucase(X的结果为”VB AND VC” 7. InStr函数:寻找字符串 [格式]: P=InStr(X,Y 从X第一个字符起找出Y出现的位置 P=InStr(n,X,Y 从X第n个字符起找出Y出现的位置 [说明]:(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。(2) InStr(X,Y相当于 InStr(1,X,Y。(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都 返回0。(4)若Y为空字符串,则返回0。 ---------------------------------------------------------------------------------------------- mid(字符串,从第几个开始,长度 ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如 mid("小欣无敌",1,3 则返回 "小欣无" instr(从第几个开始,字符串1,字符串2 ByVal 从规定的位置开始查找,返回字符

vba常用代码大全

前言 我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。 第1.1例 ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。 二、代码: Sub 示例_1_01() Dim myNum1%, myNum2% myNum1 = Asc("Excel") '返回69 myNum2 = Asc("e") '返回101 [a1] = "myNum1= ": [b1] = myNum1 [a2] = "myNum2= ": [b2] = myNum2 End Sub 三、代码详解 1、Sub 示例_1_01():宏程序的开始语句。 2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。

也可以写为 Dim myNum1 As Integer 。Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符 号 (%)。 3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。 Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。 语法 Asc(string) 必要的 string(字符串)参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。 4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e 的ASCII代码101。 5、[a1] = "myNum1= ": [b1] = myNum1:把字符串“myNum1= “赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、[a2] = "myNum2= ": [b2] = myNum2:把字符串“myNum2= “赋给A2单元格,把变量myNum2的值赋给B2单元格。 7、End Sub:程序的结束语句,和“Sub示例_1_01()”相对应。 第1.2例 Chr函数 一、题目"": 要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。 二、代码: Sub 示例_1_02()

acm常用字符串处理函数

sstrstr与strchar用法 原型:extern char *strstr(char *haystack, char *needle); 用法:#include 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 举例: #include #include main() { char *s="Golden Global View"; char *l="lob"; char *p; clrscr(); p=strstr(s,l); if(p) printf("%s",p); else printf("Not Found!"); getchar(); return 0; } 语法:int strstr(str1,str2) str1: 被查找目标string expression to search. str2:要查找对象The string expression to find. 该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0. 例子: 功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy” (假设xxx和yyy都是一个未知的字串) char *s=” string1 onexxx string2 oneyyy”; char *p; p=strstr(s,”string2”); if(!p) printf(“Not Found!”); p=strstr(p,”one”); if(!p) printf(“Not Found!”); p+=strlen(“one”) printf(“%s”,p); 说明:如果直接写语句p=strstr(p,”one”),则找到的是xxx,不符合要求 所以需采用二次查找法找到目标

javascript字符串处理函数汇总

javascript字符串处理函数汇总 虽然JavaScript 有很多用处,但是处理字符串是其中最流行的一个。下面让我们深入地分析一下使用JavaScript 操作字符串。 在JavaScript 中,String 是对象。String 对象并不是以字符数组的方式存储的,所以我们必须使用内建函数来操纵它们的值。这些内建函数提供了不同的方法来访问字符串变量的内容。下面我们详细看一下这些函数。 操作字符串的值是一般的开发人员必须面临的家常便饭。操作字符串的具体方式有很多,比如说从一个字符串是提取出一部分内容来,或者确定一个字符串是否包含一个特定的字符。下面的JavaScript 函数为开发人员提供了他们所需要的所有功能: ? concat() –将两个或多个字符的文本组合起来,返回一个新的字符串。 ? indexOf() –返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回-1 。 ? charA T() –返回指定位置的字符。 ? lastIndexOf() –返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。 ? match() –检查一个字符串是否匹配一个正则表达式。 ? substring() –返回字符串的一个子串。传入参数是起始位置和结束位置。 ? replace() –用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。 ? search() –执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回-1 。 ? slice() –提取字符串的一部分,并返回一个新字符串。 ? split() –通过将字符串划分成子串,将一个字符串做成一个字符串数组。

C语言字符串操作总结大全(超详细)

C语言字符串操作总结大全(超详细) 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移 strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移 * 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串到数值类型的转换 strtod(p, ppend) 从字符串p 中转换double 类型数值,并将后续的字符串指针存储到ppend 指向的char* 类型存储。 strtol(p, ppend, base) 从字符串p 中转换long 类型整型数值,base 显式设置转换的整型进制,设置为0 以根据特定格式判断所用进制,0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型 atoi(p) 字符串转换到int 整型 atof(p) 字符串转换到double 符点数 atol(p) 字符串转换到long 整型 3)字符检查 isalpha() 检查是否为字母字符 isupper() 检查是否为大写字母字符 islower() 检查是否为小写字母字符 isdigit() 检查是否为数字 isxdigit() 检查是否为十六进制数字表示的有效字符 isspace() 检查是否为空格类型字符 iscntrl() 检查是否为控制字符 ispunct() 检查是否为标点符号 isalnum() 检查是否为字母和数字 isprint() 检查是否是可打印字符 isgraph() 检查是否是图形字符,等效于isalnum() | ispunct()

字符串处理函数大全

字符串处理函数大全 bcmp(比较内存内容)相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件;include 定义函数;int bcmp ( const void *s1,const void * s2,int n); 函数说明;bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0。返回值;若参数s1 和s2 所指的内存内容都完全相同则返回0 值,否则返回非零值。 附加说明;建议使用memcmp()取代。 范例:参考memcmp()。 //================================================================ bcopy(拷贝内存内容)相关函数 memccpy,memcpy,memmove,strcpy,ctrncpy 表头文件;#include 定义函数;void bcopy ( const void *src,void *dest ,int n); 函数说明;bcopy()与memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址,不过参数src与dest在传给函数时是相反的位置。 返回值 ;附加说明建议使用memcpy()取代 范例 #include main() { char dest[30]=”string(a)”; char src[30]=”string\0string”; int i; bcopy(src,dest,30);/* src指针放在前*/ printf(bcopy(): “) for(i=0;i<30;i++) printf(“%c”,dest[i]); memcpy(dest src,30); /*dest指针放在钱*/ printf(…\nmemcpy() : “); for(i=0;i<30;i++) printf(“%c”,dest[i]); 执行 bcopy() : string string memcpy() :string sring //================================================================ bzero(将一段内存内容全清为零)相关函数 memset,swab 表头文件;#include 定义函数;void bzero(void *s,int n); 函数说明:bzero()会将参数s所指的内存区域前n个字节,全部设为零值。相当于调用memset((void*)s,0,size_tn); 返回值:附加说明建议使用memset取代

Js字符串操作函数大全

Js字符串操作函数大全 /* ****************************************** 字符串函数扩充 ****************************************** */ /* =========================================== //去除左边的空格 =========================================== */ String.prototype.LTrim = function() { return this.replace(/(^\s*)/g, ""); } /* =========================================== //去除右边的空格 =========================================== */ String.prototype.Rtrim = function() { return this.replace(/(\s*$)/g, ""); } /* =========================================== //去除前后空格 =========================================== */ String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } /* ===========================================

vba字符串函数列表

vba字符串函数列表.txt其实全世界最幸福的童话,不过是一起度过柴米油盐的岁月。一个人愿意等待,另一个人才愿意出现。感情有时候只是一个人的事,和任何人无关。爱,或者不爱,只能自行了断。1,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,代表字符串中首字母的字符代码 Chr(charcode) 返回string,其中包含有与指定的字符代码相关的字符 2,VBA转换函数列表: 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 3,VBA时间函数: Now 返回一个Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。 Date 返回包含系统日期的Variant (Date)。 Time 返回一个指明当前系统时间的Variant (Date)。 Timer 返回一个Single,代表从午夜开始到现在经过的秒数。 TimeSerial(hour, minute, second)返回一个Variant (Date),包含具有具体时、分、秒的时间。 DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])返回Variant (Long)的值,表示两个指定日期间的时间间隔数目 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之间的整数,表示一年中的某月

VBA,字符串处理大全

1 VBA中的字符串 2 VBA中处理字符串的函数 2.1 比较字符串 2.2 转换字符串 2.3 创建字符串 2.4 获取字符串的长度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 2.8 删除空格 2.9 返回字符代码 2.10 返回数值代表的相应字符 2.11 使用字节的函数 2.12 返回数组的函数 2.13 连接字符串 2.14 替换字符串 2.15 反向字符串 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 VBA中的字符串 VBA不仅可以处理数字,也可以处理文本(字符串)。VBA提供了两类字符串: 一类为固定长度的字符串,声明时包含指字的字符数。例如,下面的语句 Dim strFixedLong As String*100 声明字符串变量后,无论赋予该变量多少个字符,总是只包含100个字符,但字符串最长不超过65526个字符,且需要使用Trim函数去掉字符串中多余的空格。定长字符串只有在必要时才使用。 另一类为动态字符串。例如,声明字符串变量Dim strDynamic As String后,可以给该变量任意赋值,最多可包含20亿个字符。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 VBA中处理字符串的函数 2.1 比较字符串 通常,在VBA中进行字符串比较时,会用到比较运算符(如=、>等)、Like运算符和StrComp 函数。此外,在模块的开头用Option Compare语句指定比较方式。 2.1.1 比较运算符 可以采用简单的逻辑运算符进行两个字符串的比较,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、=(等于)、<>(不等于)。此外,还可以使用Like运算符进行比较。2.1.2 StrComp函数 StrComp函数返回字符串比较的结果。其语法为: StrComp(string1,string2[,compare]) 其中,参数string1和strng2为必需的参数,可以是任何有效的字符串表达式。 参数Compare为可选参数,如果该参数为Null,将发生错误。如果参数Compare设置为常数vbUseCompareOption或-1或忽略该参数,将使用Option Compare语句设置进行比较;如果忽略该参数且没有设置Option Compare语句,则按二进制进行比较;如果参数Compare 设置为常数vbBinaryCompare或0,则用二进制进行比较;如果参数Compare设置为常数vbTextCompare或1,则按文本进行比较;如果参数Compare设置为常数vbDatabaseCompare

(完整版)vb_字符串处理函数大全

mid(字符串,从第几个开始,长度)ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如mid("坦然面对",1,3) 则返回"坦然面" instr(从第几个开始,字符串1,字符串2)ByVal 从规定的位置开始查找,返回字符串2在字符串1中的位置 例如instr(1,"坦然面对","坦") 则返回1,instr(2,"坦然面对","坦"),则返回0 。0 表示未找到 InStrRev(字符串1,字符串2,从第几个开始) ByVal 从规定的位置开始,从后住前查找,返回字符串2在字符串1中的位置,此处注意,虽是从后住前查找,但是返回的值还是从前往后算的。 例如instrRev("坦然面对","坦",2) 则返回2 ; instrRev("坦然面对","然",1) 则返回0 ,因为它从"坦然面对"的第1个字开始往前查找,所以找不到。0 表示未找到 left(字符串,长度) ByVal 从[字符串]的左边开始返回[长度]个字符 例如Left("坦然面对",3) 则返回"坦然面" right(字符串,长度) ByVal 从[字符串]的右边开始返回[长度]个字符 例如Right("坦然面对",3) 则返回"然面对" ucase(字符串) ByVal 返回[字符串]的大写形式,只对英文字符有效 例如ucase("tanRANmiAnDui") 则返回"TANRANMIANDUI" lcase(字符串) ByVal 返回[字符串]的小写形式,只对英文字符有效 例如lcase("tanRANmiAnDui") 则返回"tanranmiandui" asc(字符) Byval返回[字符]的ascii编码,若有多个字符,则只返回首字符的ascii编码,和Chr()函数是一个可逆的过程 例如asc("坦") 则返回-13127; asc("坦然面对") 也返回-13127 chr(ASCii编码) Byval 返回[Ascii]编码所代表的字符,和Chr()函数是一个可逆的过程 例如chr(-13127) 则返回"坦" ;chr(asc("坦")) 则返回"坦"(这里是为了说明asc和chr的可逆性,例用此特性可以加密文本) trim(字符串) Byval 返回去掉了前、后之后的[字符串] 例如trim("坦然面对") 则返回"坦然面对" ,中间的空格不受任何影响 string(个数,字符) Byval 返回[个数]个[字符] 例如string(3,"坦") 则返回"坦坦坦" , 而string(3,"坦然面对") 也返回"坦坦坦",只有首字符才有效 space(个数) Byval 返回[个数]个空格 例如space(5) 则返回""

C#所有处理字符串函数和用法

C#字符串函数大全 C#字符串函数大全将包括Len Len(string|varname) 、Trim Trim(string) 、Ltrim Ltrim(string)等多项内容 LenLen(string|varname)返回字符串内字符的数目,或是存储一变量所需的字节数。 TrimTrim(string)将字符串前后的空格去掉 LtrimLtrim(string)将字符串前面的空格去掉 RtrimRtrim(string)将字符串后面的空格去掉 MidMid(string,start,length)从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符开始到字符串结尾的字符串 LeftLeft(string,length)从string字符串的左边取得length长度的字符串 RightRight(string,length)从string字符串的右边取得length长度的字符串 LCaseLCase(string)将string字符串里的所有大写字母转化为小写字母 UCaseUCase(string)将string字符串里的所有大写字母转化为大写字母 StrCompStrComp(string1,string2[,compare])返回string1字符串与string2字符串的比较结果,如果两个字符串相同,则返回0,如果小于则返回-1,如果大于则返回1 InStrInStr(string1,string2[,compare])返回string1字符串在string2字符串中第一次出现的位置 SplitSplit(string1,delimiter[,count[,start]])将字符串根据delimiter拆分成一维数组,其中delimiter用于标识子字符串界限。如果省略,使用空格("")作为分隔符。

在VBA中处理字符串(基本操作篇1)

在VBA中处理字符串(基本操作篇1) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 VBA中处理字符串的函数 2.1 比较字符串 通常,在VBA中进行字符串比较时,会用到比较运算符(如=、>等)、Like运算符和StrComp函数。此外,在模块的开头用Option Compare语句指定比较方式。 2.1.1 比较运算符 可以采用简单的逻辑运算符进行两个字符串的比较,即 <(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、=(等于)、<>(不等于)。此外,还可以使用Like运算符进行比较。

2.1.2 StrComp函数 StrComp函数返回字符串比较的结果。其语法为:StrComp(string1,string2[,compare]) 其中,参数string1和strng2为必需的参数,可以是任何有效的字符串表达式。 参数Compare为可选参数,如果该参数为Null,将发生错误。如果参数Compare设置为常数vbUseCompareOption或-1或忽略该参数,将使用Option Compare语句设置进行比较;如果忽略该参数且没有设置Option Compare语句,则按二进制进行比较;如果参数Compare设置为常数vbBinaryCompare或0,则用二进制进行比较;如果参数Compare设置为常数vbTextCompare或1,则按文本进行比较;如果参数Compare设置为常数vbDatabaseCompare 或2,此时仅适用于Microsoft Access,进行基于数据库信息的比较。

vba字符串函数列表

1,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,代表字符串中首字母的字符代码Chr(charcode) 返回string,其中包含有与指定的字符代码相关的字符2,VBA转换函数列表: 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 3,VBA时间函数: Now 返回一个Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。 Date 返回包含系统日期的Variant (Date)。 Time 返回一个指明当前系统时间的Variant (Date)。 Timer 返回一个Single,代表从午夜开始到现在经过的秒数。 TimeSerial(hour, minute, second)返回一个Variant (Date),包含具有具体时、分、秒的时间。 DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])返回Variant (Long)的值,表示两个指定日期间的时间间隔数目 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),包含表示年份的整数。

相关主题
文本预览
相关文档 最新文档