VB基础

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

函数的参数传递分为两种

  1. ByVal:值传递,在内存中重新开辟地址存储。修改时不会影响数值
  2. 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
程序中使用到的

  1. Date,Time,Now函数:读取系统的日期时间
  2. 格式化时间 Format(date, dateformat)
  3. 将字符串转为date CDate(dateStr)
  4. 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基础教程我们需要什么?当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。   编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。但在第四代计算机语言(可视化编程)出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。   Visual Basic(以下简称VB)可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。
BasicBasic BasicBasic正是微软公司售出的第一套件。 正是微软公司售出的第一套件。 Basic Basic Basic Basic 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 发展到今天已经有很多版本,如 GW -Basic Basic Basic Basic 、 QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic QuickBasic 、QBasic QBasic QBasic QBasic QBasic 、Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic , 等其中Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic Visual Basic 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 是最容易学习与应用的程序语 言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来言之一。 虽然最容易学习与使用,但它的功能却非常强大很多应程序都是编写出来不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 不是个都能成为比尔盖茨,但你想知道天使用的 WindowsWindowsWindows Windows的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 的诸多功能是如何实现吗? 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 你想要编写自己的应用程 序吗?通过学习 序吗?通过学习 序吗?通过学习 序吗?通过学习 VB 就能写出很多应用程序。 就能写出很多应用程序。 就能写出很多应用程序。 就能写出很多应用程序。 就
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值