概述
VB基础
1、VB For循环
基本语法
For counter [ As datatype ] = start To end [ Step step ]
[ statements ]
[ Continue For ]
[ statements ]
[ Exit For ]
[ statements ]
Next [ counter ]
举个例子 为打印1-5
for i = 1 To 5
Print(i)
Next
' res: 1 2 3 4 5
反过来打印
For i = 5 To 1 Step -1
Print(i)
Next
' res: 5 4 3 2 1
强制退出For循环,请使用Exit For, 相当于c++中的break,对于多重循环,只能退出离它最近的循环,若要跳出最外层循环,需要用到GoTo
2、VB IF选择
基本语法
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
举个例子 闰年判断
Dim y As Long
y = Year(Now)
If y Mod 400 = 0 Then
MsgBox Str(y) & "是闰年"
ElseIf y Mod 4 = 0 And y Mod 100 <> 0 Then
MsgBox Str(y) & "是闰年"
Else
MsgBox (Str(y)) & "是平年"
End If
3、函数
基本语法
[Private][Public][Static]Function <函数过程名>([形参列表])[As <类型>]
<语句系列>
[<函数名> = <表达式>]
[Exit Function]
[<语句系列>]
[<函数名> = <表达式>]
End Function
函数的参数传递分为两种
- ByVal:值传递,在内存中重新开辟地址存储。修改时不会影响数值
- ByRef: 引用传递,使用的是同一地址存储变量,一旦在函数内部修改了这个数值,引用的数值也会随之引用。
举个例子:判断一个数是否是素数
Function isPrime(ByVal num As Long) As Boolean
Dim tmp As Double
isPrime = True
If num = 1 Then
isPrime = False
Else
tmp = Sqr(num)
For i = 2 To tmp
If num Mod i = 0 Then
isPrime = False
Exit For
End If
Next
End If
End Function
4、日期
详细可见博客1,博客2
程序中使用到的
- Date,Time,Now函数:读取系统的日期时间
- 格式化时间 Format(date, dateformat)
- 将字符串转为date CDate(dateStr)
- year(T), month(T), day(T), weekday(T)
Dim dt As Date, dateStr As String, datas As String
dates = "2019-04-08"
dateStr = Format(dt, "yyyy-mm-dd hh.mm.ss") '将时间类型指定格式的字符串
week = Weekday(CDate(dates)) '将字符串转为Date类型,再获取星期几
5、字符串
详细见博客
mid(字符串, idx,len) ByRef 从字符串idx处,取出长度为len的子串
trim(str) ByVal去掉字符串前后的空格
len(str) ByVal 返回字符串的长度
Join(list[, delimiter]) As String 返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。list 必需的。包含被连接子字符串的一维数组。delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
Split(str[, delimiter]) 返回的是一个字符串数组 ,默认分隔符为" "
Dim timeStr As String, timeArr() As String, h As String, m As String, s as String
timeStr = "12:23:34"
'获取时,分,秒
'1、用字符串分隔的方法
timeArr = Split(timeStr, ":")
h = Val(timeArr(0))
m = Val(timeArr(1))
s = Val(timeArr(2))
'2、用mid来截取字符串
h = Val(Mid(timeStr(i), 1, 2)) '获取小时
m = Val(Mid(timeStr(i), 4, 2)) '获取分钟
s = Val(Mid(timeStr(i), 7, 2)) '获取秒
6、数组
VB中的数组可以自已声明下标的起始位置,当数组没有声明成定长的,可以通过redim来调整数组长度,使用preserve保留现有的数据,因为数组的长度可能不从0开始,所以数组只能通过以下方式获取
length = UBound(arr) - LBound(arr) + 1
7、Collection
Collection可以为每一个元素设置一个key,通过key对数组进行访问,这相当于c++中的map
项目中利用Collection建立学生与其导师的对应关系,每一位学生的导师唯一,但每一位导师可能需要指导多位学生,就是一对多的关系,Collection中存储的是Array
代码如下:
'根据学生与老师的关系生成map
For i = 2 To relaRows
If relation(i, 1) <> "" And relation(i, 5) <> "" Then
Dim tea As String, stu As String
tea = relation(i, 5)
stu = relation(i, 1)
stuCol.Add tea, stu
If exists(teaCol, tea) = False Then
Dim arr() As String
ReDim arr(0)
arr(0) = stu
teaCol.Add arr, tea
Else
'若已在teaCol中存在,则先删除Item,再添加
arr = teaCol.Item(tea)
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = stu
teaCol.Remove (tea)
teaCol.Add arr, tea
End If
Else
myNum = myNum + 1
End If
Next
如果直接访问集合中不存在的元素,VB会直接报错,所以在使用元素之前,需判断集合中的元素是否存在。
'判断元素是否在集合
'Collection中的元素为数组
Function exists(pCol As Collection, pKey As String) As Boolean
On Error Resume Next
exists = (UBound(pCol(pKey)) >= 0)
End Function
'Collection中的元素为字符串
Function exists1(pCol As Collection, pKey As String) As Boolean
On Error Resume Next
exists1 = Len(pCol(pKey) >= 0)
End Function
下次再补充吧
最后
以上就是帅气台灯为你收集整理的VB基础 VB基础 的全部内容,希望文章能够帮你解决VB基础 VB基础 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复