玖叶教程网

前端编程开发入门

VBA基础语法一篇

1.变量

1.Dim <> As <>

2.规则

变量名称必须使用一个字母作为第一个字符?

变量名称不能使用空格,句点(.),感叹号(!)或字符@,&,$,#。

变量名称的长度不能超过255个字符?

不能使用Visual Basic保留关键字作为变量名称?

3.

Sub var()

Dim str As String

str = "string"

MsgBox (str)

End Sub

2.常量

1.Const <> As <> = <>

2.规则

常量名称必须使用一个字母作为第一个字符?

常量名称不能在名称中使用空格,句点(.),感叹号(!)或字符@,&,$,#。

常量名称的长度不能超过255个字符?

不能使用Visual Basic保留关键字作为常量名称?

3.

Sub const_var()

Const MyInteger As Integer = 720

MsgBox (MyInteger)

End Sub

3.数组

1.数组声明的方式与声明变量相同,只是数组变量的声明使用括号

2.规则

若数组大小被指定为5,但是当数组索引从零开始时,它可以保持6个值

数组索引不能是负数

可以在一个数组变量中存储一个整数,字符串或字符。

2.数组声明

定义

1. Dim arr1()

2. Dim arr2(5)

3. arr3 = Array("apple","Orange","Grapes")

赋值

Dim arr(5)

arr(0) = "1"

arr(2) = 100

arr(3) = 2.45

arr(4) = #10/7/2013# '日期

arr(5) = #12:45:00 PM# '时间

3.多维数组

定义

1. Dim arr(2,3)

赋值

arr(0, 0) = "Apple"

arr(0, 1) = "Orange"

arr(1, 0) = "cucumber"

4.数组方法

LBound(ArrayName[,dimension])

'返回指定数组的最小下标,数组的LBound的结果是零。

MsgBox ("Line 1 : " & LBound(Array(5, 2, 3)))

UBound(ArrayName[,dimension])

'返回指定数组的最大下标。

MsgBox ("Line 1 : " & UBound(Array(5, 2, 3)))

Split(expression[,delimiter[,count[,compare]]])

'返回一个数组,其中包含基于分隔符分割的特定数量的值。

Split("Red $ Blue $ Yellow","$")

Join(List[,delimiter])

'返回一个包含数组中指定数量的子串的字符串

MsgBox ("Line 1" & " is :" & Join(Array("Red", "Blue", "Yellow"), "---"))

Filter(inputstrings,value[,include[,compare]])

'函数返回一个基于零的数组,其中包含基于特定过滤条件的字符串数组的子集。

IsArray (variablename)

'返回一个布尔值,指示指定的输入变量是否是数组变量

MsgBox ("Line 1 : " & IsArray(Array(1, 2, 3)))

MsgBox ("Line 1 : " & IsArray("sdfadd"))

4.ReDim语句

'用于声明动态数组变量并分配或重新分配存储空间

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Sub Constant_demo_Click()

Dim a() As Variant

i = 0

ReDim a(5)

a(0) = "XYZ"

a(1) = 41.25

a(2) = 22

ReDim Preserve a(7)

For i = 3 To 7

a(i) = i

Next

'to Fetch the output

For i = 0 To UBound(a)

MsgBox a(i)

Next

End Sub

5.运算符

1.算术操作符

+ : 两个操作数相加

- : 两个操作数相减

* : 两个操作数相乘

/ : 两个操作数相除

% : 模运算符,整数除法后的余数

^ : 指数运算符

2.比较运算符

= : 检查两个操作数的值是否相等。如果是,那么条件是真。

<> : 检查两个操作数的值是否不相等。如果值不相等,则条件为真。

> : 检查左操作数的值是否大于右操作数的值。如果是,那么条件是真。

< : 检查左操作数的值是否小于右操作数的值。如果是,那么条件是真。

>= : 检查左操作数的值是否大于或等于右操作数的值。 如果是,那么条件是真。

<= : 检查左操作数的值是否小于或等于右操作数的值。如果是,那么条件是真。

3.逻辑运算符

AND : 两个条件都为真,则表达式为真。

or : 如果两个条件中的任何一个为真,则条件为真。

NOT : 用于反转其操作数的逻辑状态。 如果条件成立,那么逻辑非运算符结果是条件不成立。

XOR : 如果表达式中只有一个表达式的值为True,则结果为True。

4.连接操作符

& : 连接两个值

1 & 2 = 12

"1" & "2" = 12

+ : 将两个值添加为变量,其值是数字

1 + 2 = 3

"1" + "2" = 12

6.单元格的格式方法

1.Range

Range ("A1") '表示A1单元格

Range ("A1:A9") '表示A1-A9单元格

2.[]

[A1] '表示A1单元格

[A1:A9] '表示A1到A9单元格

3.Cells(第几行,第几列)

Cells(1,1) '表达第一行第一列的单元格

7.VBA对单元格的操作

1.获取单元格的值

Sub alert()

'A1 = Sheets(1).[a1] '获取第一个工作表(表名为工作表1)中A1的值赋值给X

'A1 = Sheets("工作表1").[a1]

'A1 = Sheets(1).Cells(1, 1)

'A1 = Sheets("工作表1").Cells(1, 1)

A1Range("A1").Value '获取当前工作表A1的值

MsgBox (A1) '弹出对话框

End Sub

1.单元格赋值

Sub setVal()

Range("A1").Value = 100 '点击VBAProject窗口的'运行子过程'

End Sub

2.设置单元格的填充色

Sub setColor()

Range("B3").Interior.ColorIndex = 3 '值有1-56,代表56种颜色

End Sub

3.单元格的复制、粘贴

Sub cut()

Range("B3").copy Range("C3") '将B3的值,复制到C3单元格

End Sub

4.单元格的剪切

Sub cut()

Range("A1").cut Range("B3") '将A1的值,剪切到B3单元格

End Sub

8.条件判断结构

if then 语句

Sub if_test()

B3 = Range("B3").Value

If B3 > 10 Then

MsgBox ("大于10") '弹出字符串时,必须为双引号

ElseIf B3 < 10 Then

MsgBox ("小于10")

Else

MsgBox ("aaaa")

End If

MsgBox (B3)

End Sub

9.选择判断结构

Select Case 语句

Sub select_test()

B3 = Range("B3").Value

Select Case B3

Case 1 To 10

msg = "1到10之间"

Case 11 To 20

msg = "11到20之间"

Case 21, 22

msg = "21,22的值"

Case Else

msg = "其他的值"

End Select

MsgBox (msg)

End Sub

10.循环结构

for next 语句

Sub for_test()

For i = 1 To 10 Step 1

If i > 5 Then

Exit For '跳出for循环

End If

Range("D" & i).Value = i '循环赋值给D1-D10

Next i

End Sub

for each 语句:用于为数组或集合中的每个元素

Sub for_ecah_test()

fruits = Array("苹果", "香蕉", "雪梨")

For Each Item In fruits

MsgBox (Item)

Next

End Sub

do while loop

Sub do_while_loop_test()

Do While i < 5 '在循环开始时,判断条件是否符合

If i > 3 Then

MsgBox ("跳出循环")

Exit Do

End If

i = i + 1

MsgBox ("The value of i is : " & i)

Loop

End Sub

Sub do_while_loop_test()

Do

If i > 3 Then

MsgBox ("跳出循环")

Exit Do

End If

i = i + 1

MsgBox ("The value of i is : " & i)

Loop While i < 5 '在循环结束时,判断条件是否符合

End Sub

11.sub 与 function 的区别

子过程不需要有返回一个值,而函数可能会或可能不会有返回一个值。

子程序可以不用call关键字来调用?

子程序总是包含在Sub和End Sub语句中?

过程调用函数:

Function function_test(ByVal col, ByVal start_row, ByVal end_row)

total = 0

For i = start_row To end_row Step 1

total = total + Range(col & i).Value

Next i

function_test = total

End Function

Sub call_function()

MsgBox ("总和为:" & function_test("A", 1, 5))

End Sub

函数调用过程

Sub test(name As String, age As Integer)

MsgBox ("姓名:" & name & "年龄 :" & age)

End Sub

Function call_sub()

test "aaa", 22

End Function

12.字符串函数

InStr([start,]string1,string2[,compare])

'函数返回一个字符串第一次出现在一个字符串,从左到右搜索。返回搜索到的字符索引位置。

MsgBox ("Line 1 : " & InStr(1, “safdfasdf”, "s"))

InStrRev(string1,string2[,start,[compare]])

'函数返回一个字符串在另一个字符串中的第一次出现。搜索从右到左

MsgBox ("Line 1 : " & InStrRev("asdfasdf", "s", 10))

Lcase(String)

'将字符串转换为小写字母后返回字符串

MsgBox ("Line 1 : " & LCase("DJUEG"))

UCase(String)

'将字符串转换为大写字母后返回字符串

MsgBox ("Line 1 : " & LCase("ioek"))

Left(String, Length)

'从字符串的左侧返回指定数量的字符

MsgBox ("Line 1 : " & Left("adfasdf", 2))

Right(String, Length)

'从字符串的右侧返回指定数量的字符

MsgBox ("Line 1 : " & Right("adfasdf", 2))

Mid(String,start[,Length])

'返回给定输入字符串中指定数量的字符

MsgBox ("Line 1 : " & Mid("adfsd", 2))

Ltrim(String)

'删除字符串左侧的空格。

MsgBox "After Ltrim : " & LTrim(" adfasdfsd")

RTrim(String)

'删除字符串右侧的空格

MsgBox "After Ltrim : " & RTrim("adfasdfsd ")

Trim(String)

'删除给定输入字符串的前导空格和尾随空格

MsgBox "After Ltrim : " & RTrim(" adfasdfsd ")

Len(String)

'返回给定输入字符串的长度,包括空格

MsgBox ("Length of var1 is : " & Len("sdf sdfsd "))

Space (Number)

'用特定数量的空格填充字符串

MsgBox ("aaa" & Space(2) & "bbb")

StrComp(string1,string2[,compare])

'比较两个给定字符串后,返回一个整数值。

MsgBox ("Line 1 :" & StrComp("Microsoft", "Microsoft"))

Replace ( string1, find, replacement, [start, [count, [compare]]] )

'用另一个字符串替换字符串后返回字符串。

MsgBox ("Line 1 :" & Replace("alphabet", "a", "e", 1, 1))

String(number,character)

'使用指定的字符填充指定次数的字符串

MsgBox ("Line 1 :" & String(3, "$"))

StrReverse(string)

'反转指定的字符串

MsgBox ("Line 1 : " & StrReverse("VBSCRIPT"))

13.日期函数

date()

'返回当前的系统日期

MsgBox ("The Value of a : " & a)

cdate(date)

'将有效的日期和时间表达式转换为类型日期

MsgBox ("The Value of a : " & CDate("Jan 01 2020"))

DateAdd(interval,number,date)

'将有效的日期和时间表达式转换为类型日期

MsgBox ("Line 1 : " & DateAdd("h", 1, "01-Jan-2013 12:00:00"))

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

'返回两个指定的时间间隔之间的差值。

MsgBox ("Line 2 : " & DateDiff("q", "01-Jan-09 00:00:00", "01-Jan-10 23:59:00"))

DatePart(interval,date[,firstdayofweek[,firstweekofyear]])

'返回给定日期的特定部分

MsgBox ("Line 4 : " & DatePart("m", "2013-01-15"))

Day (Date)

'返回1到31之间的数字,表示指定日期的一天

MsgBox (Day("2018-06-30"))

DateSerial(year,month,day)

'返回指定的日期,月份和年份参数的日期

MsgBox (DateSerial(2018, 5, 10))

FormatDateTime(date,format)

'格式化并返回有效的日期和时间表达式

MsgBox ("Line 5 : " & FormatDateTime("2018-08-15 20:25", 4))

IsDate (Expression)

'判断是否为日期,它都会返回一个布尔值

MsgBox ("Line 1 : " & IsDate("Nov 03, 1950"))

Month (Date)

'返回1到12之间的数字,表示指定日期的月份。

MsgBox ("当前的月份的值是:" & Month("2018-06-30"))

Year (Date)

'返回一个表示指定日期的年份的整数

MsgBox (Year("2018-06-30"))

MonthName(month[,toabbreviate])

'回指定日期的月份名称。

MsgBox ("Line 1 : " & MonthName(1, True))

MsgBox ("Line 2 : " & MonthName(1, False))

Weekday(date[,firstdayofweek])

'返回一个从1到7的整数,表示指定日期的星期几。

MsgBox ("Line 1: " & Weekday("2013-05-16", 1))

WeekdayName(weekday[,abbreviate[,firstdayofweek]])

'返回指定日期的工作日名称

MsgBox ("Line 2 : " & WeekdayName(2, True))

MsgBox ("Line 3 : " & WeekdayName(1, False))

MsgBox ("Line 4 : " & WeekdayName(2, True, 0))

MsgBox ("Line 5 : " & WeekdayName(1, False, 1))

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言