十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
利用VBA自定义函数解决水文资料中的“四舍六入”问题
成都创新互联公司主要从事成都做网站、成都网站制作、成都外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务崖州,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
Microsoft Office套装办公软件是大家十分熟悉的办公软件,在工作中经常使用。但在水文工作中,仍然感觉到有很不方便的时候。比如,水文行业广泛使用的“四舍六入五单双”,就很难用Microsoft Office中的内部函数进行处理。但是与Microsoft Office套装办公软件绑定的VBA(Visual Basic For Applica-tion)语言提供了强大的二次开发功能,笔者以Excel为例,用它来解决上面所提到的问题,就非常容易了。
一、水文及水质资料使用的“四舍六入五单双”,执行《数值修约规范》(GB8170-87):
1.拟舍弃数字的最左一位数字小于5时,则舍去,即保留的各位数字不变。
2.拟舍弃数字的最左一位数字大于或等于5时,而其后跟有并非全部为0的数字时,则进一,即保留的末位数字加1。
3. 拟舍弃数字的最左一位数字为5,而后面无数字或皆为0时,若所保留的末位数字为奇数(1,3,5,7,9)则进一,为偶数(2,4,6,8)则舍弃。
二、初识VBAIDE
打开Excel,按Alt+F11即进入VBAIDE,在菜单上依次点击[插入]-[模块],然后输入如下代码:
' “四舍六入五单双”自定义函数
' 函数形式 Round5(x,mm),返回值Round5为 Double 型
' X为操作数值,mm为保留小数位数
' mm为 Integer 型,mm = 0 表示取整数
Private Function round5(X As Double, mm As Integer) As Double
Dim Temp1, Temp2 As String
Temp1 = 1
If mm 0 Then
Temp1 = 10 ^ Abs(mm)
X = X / Temp1
mm = 0
End If
If ((Int((Abs(X) - Int(Abs(X))) * 10 ^ mm) Mod 2) = 0 And (Abs(X) * 10 ^ mm - Int(Abs(X) * 10 ^ mm)) = 0.5) And X Val(Round(Abs(X), mm) * Sgn(X)) Then
round5 = Val((Round(Abs(X) - 10 ^ (-mm) / 5, mm)))
Else
round5 = Val(Round(Abs(X), mm))
End If
round5 = Val( round5 * Sgn(X) * Temp1)
End Function
以上程序是在“取绝对值(Abs)”、“取整(Int)”、“四舍五入(Round)”等系统内部函数的基础上完成的,函数的型式及其每个参数需要用户在属性设置中定义和声明,故叫做自定义函数。以上定义“四舍六入五单双”的函数名为Round5,定义成功后便可在Excel中象系统函数那样引用了,例如对编辑完后按Alt+Q即返回Excel,再在某一单元格输入“= Round5(A1,3)”(A1既可以是单元格,也可以是输入的数值),回车结果就出来了。如果出现“#NAME?”那就要设置一下安全设置。依次点[工具]-[宏]-[安全性],在安全级选项卡上选择“中”或者“低”,然后关闭后重新打开就可以了,如果保存为“加载宏”,以后只要是“四舍六入五单双”的计算,就可以直接用它,非常方便。VBA的功能是非常强大的,如果读者有兴趣,一定可以解决不少难题。
1.基本数据类型
基本数据类型是由系统定义的数据类型,包括数值数据类型、字节型、逻辑型、日期型、字符型、字符串类型和对象类型。
(1)数值(Numeric)数据类型
数值数据类型分别是:Integer、Long、Single、Double和Decimal,它们的表数范围、所占字节数如表3-1所列。
表3-1 VB .NET的数值数据类型
类型 数值范围 字节数
Integer -2147483648 ~ 2147483647 4
Long 9223372036854775808 ~ 9223372036854775807 8
Short -32768 ~ 32767 2
Single -3.402823E38 ~-1.401298E-451.041298E-45 ~ 3.402823E38 4
Double -1.7976313486231E308 ~ 4.94065645841247E-324
4.94065645841247E-324 ~ 1.79769313486231E308 8
Decimal -7922816251426433759354 ~ 79228162514264337593543950335
绝对值最小的非0数为:+/-0.000000000000000000000000001 12
(2)字节(Byte)数据类型
字节类型用以存储二进制数据,占1字节,其数值范围在0~255的整数,是一个无符号的数据类型。在进行ANSI与Unicode格式转换时,若数据是用Byte格式存储的,就可以保留其原值;若数据是用String格式存储的则可能会遭到破坏。在读文件、写文件、调用DIL、调用对象的方法和属性时,VB .NET都会自动在ANSI和Unicode之间进行转换。注意,除了一元减号外,所有对整数起作用的运算符都可用于Byte类型的数据。
(3)逻辑(Boolean)数据类型
逻辑类型数据占2个字节,主要用来存放逻辑判断的结果,取值为逻辑值,即True(真)或False(假)。当将其他数据类型转换为逻辑数据时,非0转换为True,0转换为False。
(4)日期(Date)数据类型
Date类型用来保存日期和时间数据,占8字节,取值范围为1-1-0001 0:00:00~12-31-9999 23:59:59的日期时间,即日期范围为公元1年1月1日~9999年12月31日,时间范围为0:00:00~23:59:59。Date数据要求在日期时间值前后加上“#”,日期时间值的格式为m-d-yyyy hh : mm : ss(月-日-年时:分:秒)。例如:#12-3-2003 10:20:18#。
(5)字符(Char)型
字符型数据占2字节,取值范围0~65535,代表一个Unicode字符。Char数据类型与数值类型之间不允许隐式转换,但可使用系统的Asc()或AscW()将Char数据显示转换为数值数据。
(6)字符串(String)数据类型
String类型用于保存字符串数据,一个字符占1字节,一个汉字占2字节,字符串最大长度可达20亿(231)个Unicode字符。字符串前后要加上" "。例如:"Good morning !"、"程序"。
(7)对象(Object)数据类型
Object类型用来存储应用程序中的对象,可存放任何类型的数据,占4字节。
2.自定义数据类型
用户自定义类型在Visual Basic.NET中称为“结构”(Structure),包含一个或多个不同种类的数据类型,视自定义类型的成员来决定存放的数据,关键字为System.ValueType。用户自定义类型数据占用的内存空间是其包含的所有数据类型所占用内存空间的总和。
mod 是求余函数,就是求一个数除以另一个数所得的余数。
如 11 mod 4 其运算结果是 3,是数字型值。
inputbox 是输入对话框,接收用户的输入。结果是字符串值。
msgbox 是消息对话框,用于弹出提示。
。。。。。。。。。黑龙江省巴彦县兴隆镇 张志晨。。。。。。。。
名称 类型 说明
abort 函数 引起放弃的意外处理
abs 函数 绝对值函数
addexitproc 函数 将一过程添加到运行时库的结束过程表中
addr 函数 返回指定对象的地址
adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列
align 属性 使控件位于窗口某部分
alignment 属性 控件标签的文字位置
allocmem 函数 在堆栈上分配给定大小的块
allowgrayed 属性 允许一个灰度选择
ansicomparestr 函数 比较字符串(区分大小写)
ansicomparetext 函数 比较字符串(不区分大小写)
ansilowercase 函数 将字符转换为小写
ansiuppercase 函数 将字符转换为大写
append 函数 以附加的方式打开已有的文件
arctan 函数 余切函数
assignfile 函数 给文件变量赋一外部文件名
assigned 函数 测试函数或过程变量是否为空
autosize 属性 自动控制标签的大小
backgrounddi2001.jpg 属性 背景色
beginthread 函数 以适当的方式建立用于内存管理的线程
bevelinner 属性 控件方框的内框方式
bevelouter 属性 控件方框的外框方式
bevelwidth 属性 控件方框的外框宽度
blockread 函数 读一个或多个记录到变量中
blockwrite 函数 从变量中写一个或多个记录
borderstyle 属性 边界类型
borderwidth 属性 边界宽度
break 命令 终止for、while、repeat循环语句
brush 属性 画刷
caption 属性 标签文字的内容
changefileext 函数 改变文件的后缀
chdir 函数 改变当前目录
checked 属性 确定复选框选中状态
chr 函数 返回指定序数的字符
closefile 命令 关闭打开的文件
color 属性 标签的颜色
columns 属性 显示的列数
comparestr 函数 比较字符串(区分大小写)
concat 函数 合并字符串
continue 命令 继续for、while、repeat的下一个循环
copy 函数 返回一字符串的子串
cos 函数 余弦函数
ctl3d 属性 是否具有3d效果
cursor 属性 鼠标指针移入后的形状
date 函数 返回当前的日期
datetimetofiledate 函数 将delphi的日期格式转换为dos的日期格式
datetimetostr 函数 将日期时间格式转换为字符串
datetimetostring 函数 将日期时间格式转换为字符串
datetostr 函数 将日期格式转换为字符串
dayofweek 函数 返回星期的数值
dec 函数 递减变量值
decodedate 函数 将日期格式分解为年月日
decodetime 函数 将时间格式分解为时、分、秒、毫秒
delete 函数 从字符串中删除子串
deletefile 命令 删除文件
diskfree 函数 返回剩余磁盘空间的大小
disksize 函数 返回指定磁盘的容量
dispose 函数 释放动态变量所占的空间
disposestr 函数 释放字符串在堆栈中的内存空间
ditherbackgrounddi2001.jpg?使背景色的色彩加重或减少50%
dragcursor 属性 当鼠标按下时光标的形状
dragmode 属性 按动的作用方式
dropdowncount 属性 容许的显示数据项的数目
editmask 属性 编辑模式
enabled 属性 是否使标签呈现打开状态
encodedate 函数 将年月日合成为日期格式
encodetime 函数 将时、分、秒、毫秒合成为时间格式
endmargin 属性 末尾边缘
eof 函数 对有类型或无类型文件测试是否到文件尾
eoln 函数 返回文本文件的行结束状态
erase 命令 删除外部文件
exceptaddr 函数 返回引起当前意外的地址
exclude 函数 从集合中删除一些元素
exceptobject 函数 返回当前意外的索引
exit 命令 立即从当前的语句块中退出
exp 函数 指数函数
expandfilename 函数 返回包含绝对路径的字符串
extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义
extractfiledir 函数 返回驱动器和路径
extractfileext 函数 返回文件的后缀
extractfilename 函数 返回文件名
extractfilepath 函数 返回指定文件的路径
fileage 函数 返回文件已存在的时间
fileclose 命令 关闭指定的文件
filecreate 命令 用指定的文件名建立新文件
filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式
fileexists 函数 检查文件是否存在
filegatattr 函数 返回文件的属性
filegetdate 函数 返回文件的dos日期时间标记
fileopen 命令 用指定的存取模式打开指定的文件
filepos 函数 返回文件的当前指针位置
fileread 命令 从指定的文件读取
filesearch 命令 在目录中搜索指定的文件
fileseek 函数 改变文件的指针
filesetattr 函数 设置文件属性
filesetdate 函数 设置文件的dos日期时间标记
filesize 函数 返回当前文件的大小
filewrite 函数 对指定的文件做写操作
fillchar 函数 用指定的值填充连续字节的数
findclose 命令 终止findfirst/findnext序列
findfirst 命令 对指定的文件名及属性搜索目录
findnext 命令 返回与文件名及属性匹配的下一入口
floattodecimal 函数 将浮点数转换为十进制数
floattostrf 函数 将浮点数转换为字符串
floattostr 函数 将浮点数转换为字符串
floattotext 函数 将给定的浮点数转换为十进制数
floattotextfmt 函数 将给定的浮点数转换为十进制数
flush 函数 将缓冲区的内容刷新到输出的文本文件中
fmtloadstr 函数 从程序的资源字符串表中装载字符串
fmtstr 函数 格式化一系列的参数,其结果以参数result返回
font 属性 设置字体
format 函数 格式化一系列的参数并返回pascal字符串
formatbuf 函数 格式化一系列的参数
formatdatetime 函数 用指定的格式来格式化日期和时间
formatfloat 函数 指定浮点数格式
frac 函数 返回参数的小数部分
freemem 函数 按给定大小释放动态变量所占的空间
getdir 返回指定驱动器的当前目录
getheapstatus 返回内存管理器的当前状态
getmem 建立一指定大小的动态变量,并将指针指向该处
getmemorymanager 返回内存管理器的入口点
glyph 函数 按钮上的图象
halt 停止程序的执行并返回到操作系统
hi 返回参数的高地址位
high 返回参数的上限值
hint 属性 提示信息
int 返回参数的整数部分
include 添加元素到集合中
insert 在字符串中插入子串
inttohex 将整型数转换为十六进制数
inttostr 将整型数转换为字符串
ioresult 返回最新的i/o操作完成状态
isvalidident 测试字符串是否为有效的标识符
items 属性 默认显示的节点
kind 属性 摆放样式
largechange 属性 最大改变值
layout 属性 图象布局
length 函数 返回字符串的动态长度
lines 属性 缺省显示内容
ln 函数 自然对数函数
lo 函数 返回参数的低地址位
loadstr 函数 从应用程序的可执行文件中装载字符资源
lowercase 函数 将给定的字符串变为小写
low 函数 返回参数的下限值
max 属性 最大值
maxlength 属性 最大长度
min 属性 最小值
mkdir 命令 建立一子目录
move 函数 从源到目标复制字节
multiselect 属性 允许同时选择几个数据项
name 属性 控件的名字
new 函数 建立新的动态变量并设置一指针变量指向他
newstr 函数 在堆栈上分配新的字符串
now 函数 返回当前的日期和时间
odd 测试参数是否为奇数
onactivate 事件 焦点移到窗体上时触发
onclick 事件 单击窗体空白区域触发
ondblclick 事件 双击窗体空白区域触发
onclosequery 事件 使用者试图关闭窗体触发
onclose 事件 窗体关闭后才触发
oncreate 事件 窗体第一次创建时触发
ondeactivate 事件 用户切换到另一应用程序触发
ondragdrop 事件 鼠标拖放操作结束时触发
ondragover 事件 有其他控件从他上面移过触发
onmousedown 事件 按下鼠标键时触发
onmouseup 事件 释放鼠标键时触发
onmousemove 事件 移动鼠标时触发
onhide 事件 隐藏窗体时触发
onkeydown 事件 按下键盘某键时触发
onkeypress 事件 按下键盘上的单个字符键时触发
onkeyup 事件 释放键盘上的某键时触发
onpaint 事件 窗体上有新部分暴露出来触发
onresize 事件 重新调整窗体大小触发
onshow 事件 在窗体实际显示之前瞬间触发
ord 返回序数类的序数
outlinestyle 属性 类型
outofmemoryerror 引起outofmemory意外
pageindex 属性 页索引
pages 属性 页
paramcount 函数 返回在命令行上传递给程序的参数数量
paramstr 函数 返回指定的命令行参数
pen 属性 画刷设置
pi 函数 返回圆周率pi
picture 属性 显示图象
pictureclosed 属性 设置closed位图
pictureleaf 属性 设置leaf位图
pictureminus 属性 设置minus位图
pictureopen 属性 设置open位图
pictureplus 属性 设置plus位图
pos 函数 在字符串中搜索子串
pred 函数 返回先前的参数
random 函数 返回一随机函数
randomize 函数 用一随机数初始化内置的随机数生成器
read 函数 对有格式的文件,读一文件组件到变量中;
对文本文件,读一个或多个值到一个或多个变量中
readln 函数 执行read过程,然后跳到文件下一行
readonly 属性 只读属性
reallocmem 函数 分配一动态变量
rename 函数 重命名外部文件
renamefile 函数 对文件重命名
reset 函数 打开已有的文件
rewrite 函数 建立并打开一新的文件
rmdir 函数 删除空的子目录
round 函数 将实数值舍入为整型值
runerror 函数 停止程序的执行
scrollbars 属性 滚动条状态
seek 函数 将文件的当前指针移动到指定的组件上
seekeof 函数 返回文件的文件结束状态
seekeoln 函数 返回文件的行结束状态
selectedcolor 属性 选中颜色
setmemorymanager 函数 设置内存管理器的入口点
settextbuf 函数 给文本文件指定i/o缓冲区
shape 属性 显示的形状
showexception 函数 显示意外消息与地址
sin 函数 正弦函数
sizeof 函数 返回参数所占的字节数
smallchange 属性 最小改变值
sorted 属性 是否允许排序
sqr 函数 平方函数
sqrt 函数 平方根函数
startmargin 属性 开始边缘
state 属性 控件当前状态
str 函数 将数值转换为字符串
stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区
strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数
strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串
strcomp 函数 比较两个字符串
strcopy 函数 将一个字符串复制到另一个字符串中
strdispose 函数 释放堆栈上的字符串
strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针
strend 函数 返回指向字符串尾部的指针
stretch 属性 自动适应控件的大小
strfmt 函数 格式化一系列的参数
stricomp 函数 比较两个字符串(不区分大小写)
stringtowidechar 函数 将ansi字符串转换为unicode字符串
strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串
strlcomp 函数 以最大长度比较两个字符串
strlcopy 函数 将一个字符串中的字符复制到另一个字符串中
strlen 函数 返回字符串中的字符数
strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针
strlicomp 函数 以最大长度比较两个字符串(不区分大小写)
strlower 函数 将字符串中的字符转换为小写
strmove 函数 将一个字符串中的字符复制到另一个字符串中
strnew 函数 在堆栈上分配一个字符串
strpas 函数 将以null结束的字符串转换为pascal类的字符串
strpcopy 函数 将pascal类的字符串复制为以null结束的字符串
strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串
strpos 函数 返回一个字符串在另一个字符串中首次出现指针
strrscan 函数 返回字符串中最后出现字符的指针
strscan 函数 返回字符串中出现首字符的指针
strtodate 函数 将字符串转换为日期格式
strtodatetime 函数 将字符串转换为日期/时间格式
strtofloat 函数 将给定的字符串转换为浮点数
strtoint 函数 将字符串转换为整型
strtointdef 函数 将字符串转换为整型或默认值
strtotime 函数 将字符串转换为时间格式
strupper 函数 将字符串中的字符转换为大写
style 属性 类型选择
suce 函数 返回后继的参数
swap 函数 交换参数的高低地址位
tabs 属性 标记每一项的内容
tabindex 属性 标记索引
text 属性 显示的文本
texttofloat 函数 将字符串(以null结束的格式)转换为浮点数
time 函数 返回当前的时间
timetostr 函数 将时间格式转换为字符串
trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符
trimleft 函数 从给定的字符串中删除首部的空格及控制字符
trimright 函数 从给定的字符串中删除尾部的空格及控制字符
trunc 函数 将实型值截取为整型值
truncate 函数 截去当前文件位置后的内容
unselectedcolor 属性 未选中颜色
upcase 将字符转换为大写
uppercase 将给定的字符串变为大写
val 函数 将字符串转换为整型值
vararraycreate 函数 以给定的界限和维数建立变体数组
vararraydimcount 函数 返回给定变体的维数
vararrayhighbound 函数 返回给定变体数组维数的上界
vararraylock 函数 锁定给定的变体数组
vararraylowbound 函数 返回给定变体数组维数的下界
vararrayof 函数 返回指定变体的数组元素
vararrayredim 函数 通过改变上限来调整变体的大小
vararrayunlock 函数 解锁指定的变体数组
varastype 函数 将变体转换为指定的类型
varcase 函数 将变体转换为指定的类型并保存他
varclear 函数 清除指定的变体
varcopy 函数 将指定的变体复制为指定的变体
varformdatetime 函数 返回包含日期时间的变体
varisarray 函数 测试变体是否为数组
varisempty 函数 测试变体是否为unassigned
varisnull 函数 测试变体是否为null
vartodatetime 函数 将给定的变体转换为日期时间
vartype 函数 将变体转换为指定的类型并保存他
visible 属性 控件的可见性
wantreturns 属性 为true时,按回车键产生一个回车符;
为false时,按下ctrl+enter才产生回车符
write 命令 对有格式的文件,写一变量到文件组件中;
对文本文件,写一个或多个值到文件中
writeln 命令 执行write过程,然后输出一行结束标志
widecharlentostring 函数 将ansi字符串转换为unicode字符串
widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量
widechartostring 函数 将unicode字符串转换为ansi字符串
widechartostrvar 函数 将unicode字符串转换为ansi字符串变量
一、VBScript概述
VBScript(Microsoft Visual Basic Scripting Edition)是程序开发语言 Visual Basic 家族的最新成员,是一种基于对象的编程语言。用户在HTML文件中可直接嵌入VBScript脚本,从而扩展HTML,使其不仅仅是一种页面格式语言,而且还可以对用户的操作做出反应。脚本语言是用来控制网页的控件和对象的一种编程语言,用其加强网页的灵活性和多样性。VBScript作为目前流行的脚本语言,是ASP的宿主语言,为Microsoft所推荐。它以其简单的语法、完善的功能,既可作为客户端编程语言,也可作为服务器端编程语言。
VBScript既可作为客户端编程语言,也可作为服务器端编程语言。客户端脚本由一个配备了解释器的Web浏览器处理,当一个浏览器的用户执行了一个操作时,不必通过网络对其做出响应,客户端程序就能完成任务。而服务器端脚本则是在Web服务器上执行生成代码,然后发送到浏览器,在浏览器上收到的只是执行后的标准HTML文件。(见说明)
二、VBScript数据类型及运算符
1、数据类型 在Visual Basic等高级程序设计语言中,有整型、字符型、数值型等多种不同的数据类型,而在VBScript中只有一个叫做Variant(一般译为“变体型”)的数据类型。随着使用方式的不同,Variant可以包含不同类型的信息,即这种数据类型可以根据用途的需要选择最合适的子类型来存储数据。 “” “ “
注意:定义时不需要指明具体子类型。
DIM A
A= #30/5/2008#
2、VBScript的运算符
1. 算术运算符
除了加(+)、减(-)、乘(*)、除(/)外,还有经常使用的取余(Mod)、求幂(^)及整除(\)等。如:5 Mod 3,结果为2;5 ^ 3结果为125;5/3结果为1。
2. 字符串(连接)运算符
有“”或“+”两种,用于将两个字符串进行连接。在使用时,经常用“”,因为连接符“+”与算术运算符中的加号“+”类似,所以当表达式两边都是数值时,则根据运算符的优先级会将“+”默认为表示相加。
“hello” + “ world” “hello world”
3. 逻辑运算符
最常用的有与(And)、或(Or)、非(Not)三种,用于判断表达式是否成立,其返回值为:真(True)或假(False)。
(1) And:只有两个值全为真时,结果才为真。如(53)And(510),表达式的值为:False。
(2) Or:只要有一个值为真时,结果就为真。如(53)Or(510),表达式的值为:True。
(3) Not:非真则为假,非假则为真。如Not(53),结果为:False;Not(510),结果为:True。
4. 比较运算符
最常用的有等于(=)、不等于()、小于()、大于()、小于等于(=)、大于等于(=)6种,用于将表达式两边的值做出比较,其返回值为:真(True)或假(False)。
三、VBScript变量与常量
1、变量的声明与赋值 变量和常量是编程语言最基本的组成单位,由变量和常量组成表达式,然后由表达式组成更为复杂的程序。变量是代表能够存储程序信息的计算机内存的位置的符号,在程序的运行过程中可以进行调用变量或者改变变量值等操作。并不需要知道具体的变量在内存中的地址,只需要调用变量名就可以实现对变量的引用。如前所述,VBScript中的数据类型只有Variant一种,所以变量的类型也都是Variant类型的。
命名变量就是为变量取个名字。变量名称要遵循VBScript命名的标准规则:必须以字母开头,不能包含句点,长度在255个字符内且在其作用域内必须是惟一的。
在VBScript中声明变量要用到Dim,语法结构为:
dim 变量名1,变量名2,变量名3,变量名n
声明一个或多个变量,在声明多个变量时用“,”分割变量名
当变量定义好后,就可以给变量赋一个值,语法结构为: 变量名=值
将“值”赋给变量名。
2、数组的定义 一个变量如果包含多于一个的相关数值,就称为数组。数组的定义与变量一样,使用Dim,只是将元素的个数即数组的大小包含在数组名称之后的括号里。 一维数组 dim a(7)
二维数组 dim a(4,5)
Redim Preserve a(8)
Redim重新调整动态数组的大小,重新声明数组后,原有数组的数值将全部清空,如果希望保留原有项目的数值,可以使用Preserver关键字。
3、定义常量 常量的值,在程序中是不变的,其命名规则与变量的命名规则一样。在VBScript中定义常量使用Const语句,语法结构为:const 常量名=值
const a="星期一" '字符串常量,必须用双引号(" ")括起来
const a=30 '数值常量
const a="---" '字符串常量
const a=#30/8/2005# '日期常量,必须用井号(#)括起来
const a = 30
a = 50
四、VBScript常用函数 1、数字运算函数 取绝对值 格式:Abs(数值表达式)
功能:返回数值表达式的绝对值。如果输入的数值大于等于零,返回的数值就会等于输入的数值;相反小于等于零,则会去掉负号输出,如:
Abs(5)=5
Abs(-5)=5
Abs(0)=0
四舍五入格式:CInt(数值表达式)
功能:将表达式的值的小数部分四舍五入后,返回一个整数值,如:
CInt(”5.2”)=5
CInt(”5.6”)=6
取整格式:Int(数值表达式)
功能:返回数值表达式值的整数部分,如:
Int(5.2)=5
Int(5.6)=5
开平方 格式:Sqr(数值表达式)
功能:返回数值表达式值的平方根。要求数值表达式的值大于等于0,如:
Sqr(16)=4
Sqr(23)=4.79583152331272
2、字符串函数 字符串长度检测 格式:Len(字符串表达式)
功能:检测字符串表达式的长度,并返回一个整数值,如:
Len("1234") 结果为:4
Len("计算机") 结果为:3
Len("VBScript函数") 结果为:10
截取字符串 左截取:Left(字符串表达式,截取的位数值)
右截取:Right(字符串表达式,截取的位数值)
中间截取:Mid(字符串表达式,从第几位,[截几位])
如:
Left("VBScript函数有哪些",5) 结果为:VBScr
Right("VBScript函数有哪些",5) 结果为:函数有哪些
Mid("VBScript函数有哪些",5) 结果为:ript函数有哪些
Mid("VBScript函数有哪些",5,5) 结果为:ript函
大小写转换 小写转大写:Ucase(字符串表达式)
大写转小写:Lcase(字符串表达式)
如:
Ucase("AbcdEfg") 结果为:ABCDEFG
Lcase("AbcdEfg") 结果为:abcdefg
去除字符串中的空格 左边空格:Ltrim(字符串表达式)
右边空格:Rtrim(字符串表达式)
两端空格:Trim(字符串表达式)
如:
Ltrim(" 先生 ") 结果为:“先生 ”
Rtrim(" 先生 ") 结果为:“ 先生”
Trim(" 先生 ") 结果为:“先生”
字符串查找
InStr(start, str1,str2)
从字符串str1的start位置开始查找字符串str2.
InStrRev(str1,str2)
返回字符串str1中从尾部开始搜索str2第一次出现的位置
3、日期函数 (1) 取系统当前的日期:Date
(2) 取系统当前的时间:Time
(3) 取系统当前的日期及时间:Now
(4)Day(Date) Hour(Time) WeekDay(Date)
如:
document.write(Date) 结果为:2005-7-12
document.write(Time) 结果为:16:27:42
document.write(Now) 结果为:2005-7-12 16:28:18
4、数据类型转换函数 数字转换成字符串 格式:Str(数值表达式)
功能:将数值表达式表示的数字转换成字符串,如:
Str(80) 结果为:“80”
Str(-80.12) 结果为:“-80.12”
转换成数字 格式:Val(字符串表达式)
功能:将字符串表达式表示的字符串内的字符型数字转换成数值型数字,如:
Val("222永州") 结果为:222
Val("2.5 78") 结果为:2.578
字符转换成字符代码 格式:Asc(字符串表达式)
功能:返回一个整型数,代表字符串表达式表示的字符串首字母的字符代码,如:
Asc("A") 结果为:65 (即大写字符A的ASCII码)
字符代码转换成字符 格式:Chr(字符代码)
功能:返回与指定的字符代码相关的字符,如:
Chr(97) 结果为:a (即在ASCII码中的小写字符a)
Chr(13) 结果为:回车符 (即在ASCII码中的回车符)
转换为日期型数据函数 格式:Cdate(表达式)
功能:按表达式的值返回日期型数据,表达式是任何能有效地表示日期的表达式,如数值表达式,字符串表达式,日期表达式。
(1) 整数:当输入的参数为一个整数时,除了0会输出时间外,其他的情况都会输出与“1899-12-30”这天相差的天数,如:
Cdate(0) 结果为:0:00:00
Cdate(1) 结果为:1899-12-31
Cdate(2) 结果为:1900-1-1
(2) 小数:当输入的参数为一个带有小数的数字时,将整数部分转换为日期,小数部分转换为从午夜起算的时间。如:
Cdate(1.1) 结果为:1899-12-31 2:24:00
其他
Cbool Cbyte CDbl CLng CStr CSng
5、数组函数
Lbound(数组名,维数)返回指定数组维的最小可用小标
Ubound
Split(expression , 分隔符)
6、其他函数产生输入框 用来产生一个接收用户输入信息的输入框。
格式1:Inputbox(" [提示信息] ")
如:
Inputbox(“请输入您的姓名:”)
格式2:Prompt(" [提示信息]")
如:
Prompt("请输入您的姓名:")
产生选择框 格式1:Confirm(" [提示信息] ")
功能:用来产生一个选择框,等待用户做出选择。
如:
Confirm("是否真的这样选?")
格式2:MsgBox("提示信息,[数值] ")
功能:用来产生一个选择框,等待用户做出选择。不同的返回值表示用户按下了不同的按钮。
提示信息参数为必选项,是作为消息显示在对话框中的字符串表达式。其最大长度,大约是1 024个字符,这取决于所使用的字符的宽度。
[数值]为数字,可选,表示指定显示按钮的数目和类型、使用的图标样式,默认按钮的标识及消息框样式的数值的总和。如果未指定,则默认值为0,表示只显示一个“确定”按钮;指定1,表示显示“确定”、“取消”两个按钮;指定2,表示显示“终止”、“重试”、“忽略”3个按钮;指定3,表示显示“是”、“否”、“取消”3个按钮;指定4,表示显示“是”、“否”两个按钮;指定5,表示显示“重试”、“取消”两个按钮。
产生提示框 格式:Alert(" [提示信息] ")
功能:用来产生一个弹出式的警告框,其图标为一个警告标识。如:
alert("恭喜您通过!")
五、VBScript语句
1、条件语句选择结构是一种可以根据条件实现程序分支的控制结构。其特点是,根据所给定的选择条件为真(即条件成立)或为假,而决定从各分支中执行某一分支的相应操作,并且在任何情况下均有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。选择结构是通过条件语句来实现的,条件语句也称if语句。
If…Then...Else…End if 格式:if 条件 then
[命令1]
else
[命令2]
end if
功能:如果条件成立,执行Then后的命令;反之,如果条件不成立,执行Else后的命令。
判断用户输入的口令字是否正确 html
body
script language="vbscript"
dim hd
mm="1234"
hd=inputbox("请输入你的密码:")
if hdmm then
alert("你的密码不正确!")
else
alert("密码正确,欢迎你的光临")
end if
/script
/body
/html
If…ElseIf…End if 格式:if 条件1 then
[命令1]
[elseif 条件2 then
命令2]
[elseif 条件3 then
命令3]
……
[else
命令n]
end if
html
body
h2根据不同的考试成绩确定等级/h2
script language="vbscript"
dim cj
cj=inputbox("请输入你的考试成绩:")
if cj60 then
alert("等级评定为:差")
elseif cj=60 and cj80 then
alert("等级评定为:中")
elseif cj=80 and cj90 then
alert("等级评定为:良")
elseif cj=90 and cj=100 then
alert("等级评定为:优")
else
alert("你输入的成绩有问题!")
end if
/script
/body
/html
在多个条件中进行选择的更好方法是使用Select case…End select语句。 格式:Select case 测试表达式
[case 表达式表1
[命令1]]
[case 表达式表2
[命令2]]
…
[Case else
[命令n]]
end select
select case cj
case 50
alert("等级评定为:差")
case 70
alert("等级评定为:中")
case 80
alert("等级评定为:良")
case 90
alert("等级评定为:优")
case else
alert("你输入的成绩有问题!")
end select
2、循环语句循环结构是一种可以根据条件实现程序循环执行的控制结构,一般有当型循环和直到型循环两种结构,其他循环结构可以看作这两种结构的变型。
(1) 当型(While)循环:当给定条件为True时,重复执行语句;否则循环语句停止执行,而执行下面的语句。
(2) 直到(Until)型循环:一直重复执行一组语句,直到给定的条件为True时停止,然后执行下面的语句。
(3) 变形体(For)循环:将一组语句按照指定的循环次数重复执行后,再执行下面的语句。
Do…Loop
For…Next For Each...Next语句是对数组中的每个元素或对象集合中的每一项都执行一组相同的操作。
六、VBScript过程和自定义函数 Sub子过程的格式为:
定义过程:Sub 子过程名([形式参数])
[命令]
End Sub
调用过程:Call 子过程名[([实际参数])]
html
head
script language="vbscript"
sub xm() '定义xm过程,无参数。注:无参数也必须加上()
dim name
name=prompt("请输入您的姓名")
document.write("欢迎您," name "!" "p")
end sub
sub pf(a) '定义pf过程,参数为a
dim s
s=a*a
document.write("A的平方=" s)
end sub
/script
/head
body
script language="vbscript"
call xm '调用xm过程
a1=prompt("请输入A值:")
call pf(a1) '调用pf过程,并将实际参数a1的值传递给形式参数a
/script
/body
/html
Function函数的格式为:
定义函数:Function 函数名([形式参数])
[命令]
End Function
调用函数:函数名[([实际参数])]
3、变量的作用域和生存期 细心的读者可能已发现,在本章的例题中均使用到了变量,有些例题在使用变量时首先用Dim进行了定义,而有些例题却没有给变量定义。变量能否不定义就使用或者在程序中的哪处定义,都与变量的作用域有关。变量的作用域是指变量所起作用的范围,变量声明的位置不同,其作用域也不同。如果一个变量在过程内声明,则称其为局部变量,因为它只能在这个过程中使用,用于在过程中临时存放数据。如果一个变量在过程外声明,则称其为全局变量,它不仅可在过程内使用,也可在过程外使用(即整个程序中使用),用于存放整个应用程序公用的数据。变量的生存期指变量的存活期。对于全局变量,其生命周期是从它被声明起一直到整个脚本运行结束才结束;而对于局部变量,其生命周期是从过程或函数被执行的时刻开始到过程或函数执行结束。所以,局部变量是用于存取临时数据的。
表单标记
1 表单标记:表单标记与动态网站设计是分不开的,现在上网凡是要求用户输入信息的基本上都由表单实现。表单的最直接的作用就是它可以从客户端浏览器收集信息,并将所收集的信息指定一个处理的方法。此处理方法可以为ASP的程序,也可为其他的如JSP、PHP等程序。因此掌握好表单的使用是制作动态网站的基础,也是至关重要的一步。表单是实现与用户进行信息交流的主要方式,它可以细分成以下两块。
from name=”名字” method=”方式” action=”文件”…/form
action : 说明当这个表单提交后,将传送给哪个文件处理。
Method:指定表单的提交方式即与服务器交换信息时所使用的方式,一般选择POST(文件形式不限制长度)或GET(附加在URL地址后限制长度提交)。具体使用见后面章节。
2 表单标记可提供让浏览者输入文字信息,如姓名、密码、留言等。根据输入方式不同,又分为三类。
(1) 单行文本域,用户输入的信息会原样显示。其语法格式为:
input type="text" value="设置的初始值" name="文本域的名称"
(2) 密码文本域,用户输入的信息会以“*”形式显示。其语法格式为:
input type="password" value="设置的初始值" name="文本域的名称"
(3) 多行文本域,用户输入的信息会原样显示。与单行文本框的区别在于,多行文本框可以指定文本框的宽度和高度。其语法格式为:
textarea cols="文本框的宽度" rows="文本框的高度" name="文本域的名称"
/textarea
(4)文件域标记,一个文本框加一个浏览按钮,用户可以直接选择要上传给服务器的文件,也可以在文本框内直接填写。
3 表单标记可提供让浏览者在固定的范围内作出选择,如性别、爱好等。根据输入方式不同,又分为以下两类。
(1) 单选域,只允许选取一项。其语法格式为:
input type="radio" name="选择域的名称" 名字的相同的单选域构成一组。
(2) 复选域,可多项选取。其语法格式为:
input type="checkbox" name="选择域的名称"名字相同的复选域传递多个值。
4 表单标记可提供让浏览者将所有输入的内容采取的一个响应动作,如提交给服务器处理,还是将该输入的内容清除后再重填。
(1) 提交按钮,把输入的内容提交给相关程序,让服务器处理。其语法格式为:
input type="submit" value="确定" name="按钮域的名称"
(2) 重置按钮,把刚输入的内容清除,再由用户重新输入。其语法格式为:
input type="reset" value="重置" name="按钮域的名称"
5 表单标记可提供让浏览者在给出的菜单中作一个选择,如选择籍贯、类别等。根据提供的方式不同,又分为以下两类。
(1) 下拉菜单,提供一个下拉式菜单(例:)。其语法格式为:
select name="菜单的名称"
option菜单中的第1个值
option菜单中的第2个值
option菜单中的第N个值
/select
6 滚动菜单,提供一个带有滚动条的菜单(例:)。其语法格式为:
select name="菜单的名称" multiple size="确定显示选择项的个数"
option菜单中的第1个值
option菜单中的第2个值
option菜单中的第N个值
/select
定位模块上的点,可以按照普通I/O那样的连接,也可以走通讯,DOG可以在软件上设置,不过一般在定位模块上也可以设置。
三菱PLC Q系列定位模块:
1,外围设备指的是计算机,利用计算机软件进行参数设置,方便参数设置,监控和试运行。
参数也可以由PLC程序赋值,每一个参数都有一个缓存地址可供读取或修改。
2,关于这几个参数,主要是因为三菱的QD75系列定位模块可以用其他单位,比如毫米,角度。而且不需要工程师自己去换算,设置了基本参数,包括外部伺服的每转脉冲数,每转移动距离。
3,比如选择了毫米为单位,每转移动距离按照这个单位设置(如果数据太大不合法,后面有个倍率可以用来调整),加上伺服的实际每转脉冲数,定位模块和伺服就匹配起来了。
4,这样就可以下达mm为单位的指令,比如绝对值移动到500mm,定位模块自动算出需要的脉冲数发给伺服马达。