Professional Documents
Culture Documents
vb笔记本最新
vb笔记本最新
代码中 me 代表当前 窗体
----------------------------------------------------------
最重要的三个控件:1 Label 标签
2 TextBox 文本框
3 CommandButton
----------------------------------------------------------
name 属性
每一个窗体上的控件都有一个唯一的名称
命名规则:必须以字母或汉字开头,由字母,汉字,数字串,下划线组成,
长度不超过 40 个字符
caption:标题
代码:msgbox
功能:跳出一个消息框
如 msgbox "hello"
点开控件窗体的时候就会跳出 hello
设置属性的方法
对象名.属性名=属性值
如果想要一行中写二条语句需要加(冒号:)才可以
如 a=10 :b=20 //这样子才能写在一行,不然就会报错
在 vb 中的注释是:'单引号
如'测试
=====================================================
三大主要功能
-----------------------------------------------------------------------------------
在 vb 中的取址符&
功能引用某个控件的内容
如 我在 CommandButton 按钮的 click 设置中
加上 &Text1.text 即是把 text1.text 的内容用到 CommandButton 按钮中
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
!!!!vb 中代码的程序执行顺序为上到下!!!!
-----------------------------------------------------------------------------------
关闭程序的语句:End
Font 字体 如宋体那些的。。
fontsize 为名字大小
=======================================================
=======================================================
常量和变量
常量:就是在程序运行中其值不能改变的量
分为:1 字面常量 如 整数 123
浮点数 45.7
指数形式 3e-2
字符串"abc"
2 符号常量 通过符号表示常量
如:const PI=3.14159
变量:存放数据的盒子,就是在程序运行中其值可以改变的量
盒子名称(变量名)
盒子类型(变量类型)Integer
如果要算千位,那百位的规则就要发生改变,其他不变
设值:1634
千位:1634 \ 1000
百位*(改变了) : (1634 \ 100) mod 10 or ((1634 \ 10) mod 100) \ 10
十位个位还是一样
-----------------------------------------------------------------------------
算术运算符
+加 -减 *乘 /除 \整除 ^乘方(次方) Mod 求余运算符//Mod 两侧必须都为整数
运算符优先级:1: ^ 2: 负号 - 3:* 4: / 5:\ 6: + -
开根号:sqr
-----------------------------------------------------------------------------
两个特殊的运算符
字符串运算符:&和+
使用&时要在变量与&之间加一个空格
作用: 进行字符串连接
关于:“+”运算符 //&只会进行字符串连接,如果是数值型数据就会先转换成字符串型数据,不像+有这么多规
则
1:当两边都是数值型数据时
123+456 这是+是加法的作用 结果=579
2:当两边有一个是字符型数据时
“123”+456 *这时程序会尝试将字符型的数据转成数值型的数据*
所以这时字符型“123”被转成数值型 123,完成加法运算,还是得到结果= 579
注意这个例子:如 “abcdef”+ 12345 这时 abcdef 无法被程序转成数值型数据
所以结果= 报错!
3:当两边都是字符型数据时
如:“123”+“456”这时+的作用就是字符串连接,而不是加法了
所以得到结果 = “123456”注意这里是字符串型的 123456,而不是数值,因此也不能拿它做算术运算
!!当+和&同时在一个运算时,谁先在左边就先算谁!!
例子:12000+“123” & 100 结果为:“12123100”
//因为先用+将 123 转换成数值型数据,然后 12000+123=12123
//然后 12123 & 100 &将 2 个数值型数据转为字符串型,然后相连!注意表示相加
//最后得到 12123100
例子:12000 & “123”+100
//因为先计算 12000 & “123”,根据原理得到字符串“12123”
//然后“12123”+100,根据原理会变成 12123+100=12223 这个数值结果!
-----------------------------------------------------------------------------
print
print 方法
功能:在窗体上打印文字
如: print 4 或 print “abc”
;(分号):光标定位上一个显示的字符 //分号后面的内容会紧挨着后面的内容
,(逗号):光标定位在下一个打印区开始位处 //简单就是分号离的近,逗号离的远
无;,:换行 //意思就是如果后面没加;或者,就会自动换行
如果想输出 a=10 那就是:print "a=10";a//这里 a 已经赋值等于 10 了,知识点字符串和数值分开就不会乱
-----------------------------------------------------------------------------
输入数据 val
通过文本框进行输入
使用 val 函数 (
//val 函数的作用是将字符型数据转换为数值数据)(如果 a 本身被定义为字符型数据那么就不需要 val 函数,
可以直接:a=Text1.Text)
如:Dim a As Integer
( //因为 text 文本框内输入的其实都是字符串,比如输入 9,其实内部数据是“9” )
a=Val(Text1.Text)//把文本框里面的数据给到 a
-----------------------------------------------------------------------------
ASCll 码
Asc 函数:返回字符的 Ascll 码值 //比如我给它一个字符,他就会返回它对应的 ascll 码值
Chr 函数:返回 ascll 码值对应的字符 //比如我给他一个 ascll 码值,它就会给我对应的字符
-----------------------------------------------------------------------------
=======================================================
关系运算符
<小于 <=小于等于 >大于 >=大于等于 =等于 <>不等于 //优先级相同
关系表达式 只会得到 2 个值 真或假
if 语句的嵌套//使用和 c 语言差不多
格式:If 表达式 1 Then
语句块 1
ElseIf 表达式 2 Then //注意这里的 Elseif 是一起的,不是 else if
语句块 2
............
end if
-----------------------------------------------------------------------------
逻辑运算符
在 vb 中
And 与运算 (二者必须完全符合)
Or 或运算 (二者之一符合即可)
Not 非运算 (取反)
优先级:Not > And > Or
算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符
重点知识点 : 区间判断
如表示一个数是否在一个区间[5,10)内,设那数为 8
5<=8<100 是错的!!!!!!!!
正确:a >= 5 And a < 10 //这才是对的
-----------------------------------------------------------------------------
多分支选择语句 select
// =c 语言中的 switch 语句
*!:Is 关系运算符表达式
用 is 来代替 select 中设定的变量
如:is < 60
格式:select case 变量或表达式
case 表达式列表 1
语句块 1
case 表达式列表 2
语句块 2
。。。。。。
【case else //如果都不满足执行这个
语句块 n+1】
End select
-----------------------------------------------------------------------------
扩展内容
可以简化简单的 If-else 结构
格式:
IIf(表达式 1,表达式 2,表达式 3)
就是先判断表达式 1 是否为真,如果为真,就把表达式 1 拿出来用
如果表达式 1 为假,就判断表达式 2 是否为真,以此类推到 3,谁真就拿谁来用
如:a = 3;
b = 6;
c = IIf(a>b,a,b) //因为表达式 1 a>b 为假,所以不考虑,表达式 2 a=3 为真,所以
拿 a 来用,从左到右判断,如果前面判断为真,后面的就不判断了
//所以这里 c = 3
-----------------------------------------------------------------------------
while 循环语句(条件性循环)
格式:while 条件
语句块
Wend
当表达式为真值的时候,执行循环体
控制循环次数:可以用 i = i +1 ,等等类型的方法
字符函数:
:Left(x$,n) 功能:从左边取 n 个字符串
right(x$,n) 功能:从右边取 n 个字符串
mid(x$,s1,n2) 功能:从 s1 的位置开始取,取 n2 个 如:mid("abcd",2,2)=bc
text2=mind(text1,7,8)
len(x$) 功能求长度,返回数值性 如:len("abc") = 3 len(text1)
Ucase(x$) 功能将小写字母转换成大写字母 Ucase("abc")=ABC
Ucase(text1)
Lcase(x$) 功能将大写字母转换成小写字母
显示系统现在的时间:time() 如:label1.caption=time()
关于 mod 前面的数小于后面的数,结果为前面的数
如 : 2 mod 7 = 2
space 空格函数
space(5),5 个空格
tab 也是空格
tab(5),空格 5 下
退出指令:end
关于 timer 计数器控件:
计时器一定要设置初始不开用,就是在右边属性找到 enabled
选择 false,后面再代码中再打开
每隔一秒减一:需要点击计时器,到计时器里面配置代码
label1.caption = label1.captain - 1
if labe1.captain = 0 then
timer1.enabled= false
end if
label1.left = 0
新窗体
添加新窗体:上面-》工程-》新窗体
怎么 弹出新窗体:代码 form2.show
隐藏窗体:代码 form2.Hide
修改字体代码:fontname 如:label1.fontname=”黑体“
修改字体大小代码:fontsize 如:label1.fontsize = 16
为赋值的变量,初始值为 0
for 循环:
循环体
步长的作用 :
就是一下多少步,就是步长
循环变量= 循环变量+步长(初始值为 0) (关于计数和 i 值叠加)
如 step 1 那么就是循环变量+2
如 step -1 那么就是循环变量-1
以此类推
例:for i = 1 to 5 step 1
sum= sum + i
next i //这样就完成了,1+2+3+4+5 的步骤,以此类推
5+4+3+2+1
也可以 sum = 5
for i =4 to 1 step -1
sum= sum - i
next i //这样的顺序就是 5-4-3-2-1 了,都行
再算阶乘时,需要给相乘值符初始值 1,需要在循环外面赋值!
如: sum = 1
for i = 1 to 4 step 1
sum = sum * i
next i // 1x2x3x4
如何让一个拆分开的数重合
如 1634 千位 1 百位 6 十位 3 个位 4
判断一个数是不是素数(质数) 如果这个数能被除自己之外的数除,它就不是素数
完整的程序:a = val(text1.text)
flag = true //先判断他是一个素数,如果后面判断不是再为假
if flag=true then
print a&; "他是一个素数"
else
print a& "他不是一个素数"
end if
怎么输出一个回车:print //输出一个空的 print 即可
-----------------------------------------------------------------------------------
-----------------------------------
格式输出很重要,一般都用在 print 后面,一定不要忘了输,根据题目选择用法
标准格式输出:print 后面加 逗号,就行了 如:print a,就是标准格式输出 a
紧凑格式输出:print 后面的 分号; 如 print a; 如果不加分号,就会自动换行到下一行,加了分号后面
的内容就会在 a 的同一行输出
-----------------------------------------------------------------------------------
-----------------------------------
do 循环 //条件为真执行循环,条件为假结束循环
Do while 条件
循环语句
loop 一定要在循环内,写出跳出循环的代码
-------------------------------------------------------------------------------
外层循环控制行数,内层循环控制个数,内层循环用外层循环来当条件
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------
在 list 的单击事件下
list1.text = "aa" .....
-----------------------------------------------------------
-----------------------------------------------------------
最小值:Min = a(0)
for 1 to 5
if min<a(i) then
min = a(i)
end if
最大值:max=a(0)
for 1 to 5
if max>a(i) then
max= a(i)
end if
------------------------------------------------------------
怎么让文本框 text 的内容叠加在一起,就是不覆盖它,输出多个不同数
只需要:text1.text = text1.text & a(i) & space(2) //这样子尽快,a(i)是要输出的数
千万注意不要用加号相连,要用&,space(2)是输出 2 个空格,里面数字是几就是输出几个空格
------------------------------------------------------------
考试的时候,运行前要保存!!!!!!!
---------------------------------------------------------------
随机因子
***********************!!!!!!!!!!!!!!!
在创建随机数的时,一定一定!!要加随机因子 Randomize 才能实现每次随机的不同
---------------------------------------------------------------
style
总结 0 :可以下拉(有列表框的功能),可以输入(有文本框的功能)
1: 不可以下拉(没列表框的功能),可以输入(有文本框的功能)
2 :可以下拉(有列表框的功能),不可以输入(没有文本框的功能)
---------------------------------------------------------------
平方和:就是自己乘自己 比如 2 的平方和就是 4
---------------------------------------------------------------
退出循环:exit for
--------------------------------------------------------------------
**
列表框多选 首先:需要先点击列表框,然后找右边找到 multiselect 把 0 改为 1
然后最重要的一步看代码
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem i
End If
Next i
最重要的是:列表框的循环要从下到上,就是从最大的到最小的
为什么?:因为假如你是从小到大,你移动了一个选项到另一个列表框,你的序号就变小了,值不匹配,然后
就会出错
但是如果从大到小,就不会有这个问题,你序号变小,跟我从大到小没影响
--------------------------------------------------------------------
很重要,重点研究
format:格式输出函数
格式:format(需要被格式化的内容,格式化方式)
功能:用于控制输出数据的格式!
字符 # 功能:数字占位符 显示一位数字或者什么都不显示,就是占着这个位置,有数就显示数,没数就占着
字符 yyyy 功能:显示年
字符 mm 功能:显示月
字符 dd 功能:显示日
字符 hh 功能:显示小时
字符 nn 功能:显示分钟
字符 ss 功能:显示秒
字符 AMPM 功能:如果是上午就会显示上午,如果是下午就会显示下午
字符 ! 功能:强制右补空格,原本@没有字符就会补空格,但是只能在左边补,加上这个就会往右边补了
如:format("abc""!@@@@@") = abc 空格空格
例子:今天是 2022 年 3 月 13 日
Format(now,"yyyy 年 mm 月 dd 日")
“今天是”& Format(now,"yyyy 年 mm 月 dd 日")
今天上下午是 2022 年 3 月 13 日 10 时 13 分 28 秒
Format(Now,"今天 AMPM 是 yyyy 年 mm 月 dd 日 HH 时 MM 分 SS 秒")
--------------------------------------------------------------------
冒泡法:看大纲最下面最下面就有
--------------------------------------------------------------------
考试常用的函数,一定都要记住!!!!!
date 日期
time 时间
Now 日期+时间
year(now) 取现在的年份 如 2022
Hour(now) 取现在是几点(小时),不含分钟 如:22
*****
操操操,我现在才知道,vb 可以直接判断大小写,不用转换成 acsll 码再判断
如 if S1 >= "a" and S1 <="z" then
if S1 >= "A" and S1 <="Z" then
这样就可以完成大小写的判断了
Ucase(x):将字符串 x 中所有字母转换为大写,其他不变
****
Mid(S,m,n) :从 S 中的第 m 个字符开始取 n 个字符 如:Mid("ABCDE",3,1) = C
注意:也可以用 mid 来取数字 如:Mid(123456,3,1) = 3 但是这时取出来的数据是字符串类型的!!
要先用 val 转换成 数值类型的才能当成数字使用!!
Abs(x) : 返回 x 的绝对值
如:abs(-88)=88
sqr(x) :开根号
如:sqr(4)=2
求正负号 用 sgn 函数
sgn(x) :返回 x 的符号 即:
当 x 为负数时,返回-1
当 x 为 0 数时,返回 0
当 x 为正数时,返回 1
如:sgn(66) = 1
sgn(-66) = -1
sgn(0) = 0
IsNumeric() 函数
功能:判断输入的是不是数字,如果是数字返回真,如果不是数字返回假
如:isnumeric("abc") = false isnumeric(123)=true
--------------------------------------------------------------------
静态变量 static :只有程序退出或窗体关闭时,数据才释放
--------------------------------------------------------------------
关于阶乘的阶乘!!!
如:5 的阶乘的阶乘就是:1!+2!+3!+4!+5!
代码实现如下:
Dim a As Integer, i As Integer, sum As Double, j As
Integer, supersum As Double
a = Val(Text1.Text)
sum = 1
For j = 1 To a
For i = 1 To j
sum = sum * i
Next i
supersum = supersum + sum
sum = 1
Next j
Label2.Caption = a & "的阶乘的阶乘是:" & supersum
文件夹里有例子,其实很简单
--------------------------------------------------------------------
求最大公约数和最小公倍数
最大公约数:
m = Val(Text1.Text)
n = Val(Text2.Text)
If m < n Then
j = m
m = n
n = j
End If
r = m Mod n
Do While r <> 0
m = n
n = r
r = m Mod n
Loop
Text3.Text = Str(n)
// 看上面就知道了,就是你输入的那 2 个数,除你的最大公约数
// 注意必须是最初始的数,不能是后面改过的,记住
--------------------------------------------------------------------
For i = 1 To 100
Next j
Next i
--------------------------------------------------------------------
"文本框"中如何判断,使用者是否输入了回车!
1:首先双击文本框进入设置单击命令页面,在上面 2 个大框中,选择右边的那一个 click,下
拉,找到 keypress
2: 在 keypress 下面通过检查他的 Ascii 码来确定,使用者是否输入了回车
代码:If KeyAscii = 13 Then MsgBox "你敲了回车键!"
3:即 如果 KeyASCII = 13 即使用者输入了回车
--------------------------------------------------------------------
cls :清屏
--------------------------------------------------------------------
DateDiff("要求的时间格式","开始时间","结束时间")
功能:求天数 or 求秒数 or 求年数
“yyyy”:年
“s”:秒
“d” : 天
--------------------------------------------------------------------
文本框属性:
1:locked 是否可以编辑文本框 默认 false 可以编辑
如:Text1.locked = true 就是给文本框上锁不可以编辑
2:Maxlength 最大长度设置
4 : passwordchar 默认为空
text1. passwordchar = “*” 文本框打出的就都出*
文本框隐藏 visible
如:text1.visible = not text1.visible 即隐藏文本框
--------------------------------------------------------------------
--------------------------------------------------------------------
redim 动态定义,定义数组时要用!
如:ReDim n(k, p) As Long
RGB 函数,控制颜色的
有三原色,控制各种颜色
格式:rgb(255,255,255) 左到右是红,绿,蓝
--------------------------------------------------------------------
杨辉三角形
'杨辉三角形
'首先要创建一个二维数组,和相应的变量
'例子先用规定值,实际中可以动态控制行和列
Dim k, p, i, j As Long
'杨辉三角形的 k 是行,p 是列
'列的固定公式是 2 * k -1
k = 5
p = 2 * k - 1
'这个数组很重要,控制的三角形的行和列
ReDim n(k, p) As Long
'现在要给杨辉三角形赋值
'首先要明白,杨辉三角形的一行的初始值一定是 1,最后一行的最后一列的初始值也是 1
'所以我们先把固定值,给初始化
'一行的初始值的列固定公式为 p / 2 + 1
n(1, Int(p / 2) + 1) = 1
'i 要从 2 开始,为什么?因为第一行已经赋值了,就不用再赋值了
For i = 2 To k
'为什么 p 要减 1,因为如果不减 1,数值循环就会溢出
For j = 1 To p - 1
'下面这段公式是什么意思:因为杨辉三角形的下面一个值是,上行的这个位置的左边(j-1),和右边
(j+1)的值相加,所以是这个公式
n(i, j) = n(i - 1, j - 1) + n(i - 1, j + 1)
Next j
Next i
'别忘了还有一个最后一个初始值要赋值
n(k, p) = 1
'最后输出杨辉三角形即可
For i = 1 To k
For j = 1 To p
'让我们把 0 变成空格,所以判断为 0,就打印空格,打印三个空格是为了美观
If n(i, j) = 0 Then
'还有千万不要忘了,紧凑格式输出;
Print Spc(3);
Else
Print n(i, j);
End If
Next j
'打完一行,要换行
Print
Next i
End Sub
--------------------------------------------------------------------
关于滚动条
横向滚动条 Hscroll
纵向滚动条 Vscroll
滚动条要设置一个最小值和最大值:min 和 max,在控件旁边设置
表示:滚动的范围变化
比如我要设置字体随着滚动变大变小,最小的字体为 8 号,最大的为 100
那么我们就要 min 设置成 8,max 设置成 100
怎么让字体颜色随着滚动变化深浅
比如我们要让蓝色深浅
就:label1.Forecolor = rgb(0,0,Vscroll1.value)
滚动条属性
:value 表示滚动条当前所在的位置(即当前的值)
: largechange 表示点击滚动条中间空白的那个位置,每次变动多少 value 值
: smallchange 表示滚动条有指向标(箭头)的那个位置,每次变动多少 value 值
滚动条还有一个 scroll 事件
即:每次拉动滚动条发生什么