当前位置:文档之家› excel vba 之循环语句

excel vba 之循环语句

excel vba 之循环语句
excel vba 之循环语句

学习VBA

之循环语句

循环语句,顾名思义,就是让某一段语句反复运行,直到满足了某个条件时,才终止这段语句的运行,循环语句是各种编程语言中不可或缺的语句,它不但能简化程序语言,有时不用循环语句,就无法完成某些工作。在编程语言的编写过程中,它和判断语句一样重要,只有懂得了它的精髓,我们才能让计算机像我们的佣人一样为我们服务,我觉得驾驭计算机,其实是一种乐趣。

一.DO….LOOP循环语句

1. do …… loop 循环语句

格式:do

<执行语句>

[执行语句]

……

Loop

例:dim a%

Do

A=a+1

If a>10 then exit do

Loop

Msgbox “现在变量a的值是:” & a

在这个例子里,dim语句和msgbox语句不是循环语句里的,dim语句是定义了一个变量a,msgbox是在循环完成后,弹出个窗口显示循环完成后a的值。

Do 是循环的开头,loop 是循环的结尾,do 和loop 之间是需要执行的循环语句,中间的if判断语句为当条件为真时,退出循环。在这种循环语句中,循环之初do并不给退出循环的条件,所以循环中间的通过判断语句退出循环必不可少,缺少了判断语句,那就是一个失败的循环,即死循环。在这个循环之中的判断语句,并不一定固定是if…end if这种,它可以是那六种判断语句里的任何一种,但必须得有可行的条件,如果条件不可能实现,就算有判断语句也只能算是失败的循环。如在这个例子中的条件为a<0,就不行。

在这个循环一开始,我并没有对变量a进行赋值,它在未赋值的情况下,默认值是0。第一次循环,a=a+1,运行这句后变量a的值就变成了1,然后执行判断语句,这时a的值不符合条件a>10,执行到loop后,程序会自动将运行顺序调到do处,接着执行do下面的语句,直到a的值为11时,条件a>10为真,才会退出循环。

有时我们执行循环后,需要得到变量的值,执行语句的顺序不一样,得到的值就不一样,同样是这个例子中

Do

A=a+1

If a>10 then exit do

Loop

Do

If a>10 then exit do

A=a+1

Loop

循环结束后,变量a的值是不一样的,想一想为什么?

现在你也许会问,这样的程序有什么用呢?现在我来举个实用的例子:假设现在已打

我们要将B列成绩为81-90的,在相对应的C列写上”良”,实例如下:

Sub aa()

Dim a%

A=1

Do

A=a+1

If a > 6 then

Exit do

Else

If cells(a,2) >80 and cells(a,2) <= 90 then cells(a,3)=”良”

End if

Loop

End sub

建一个上面的工作表,运行以上代码,分析每一句运行的作用及含义,自己换一种条件再试,直到理解代码的含义为止。

2. DO WHILE …..LOOP循环语句

格式:do while <逻辑表达式>

<执行语句>

[执行语句]

……

Loop

这个循环语句比上面的那个循环语句多了个逻辑表达式,这个逻辑表达式的值就是退出循环的判断,当这个逻辑表达式的值为真时循环,为假时就退出循环。用这个循环语句就可以省去上面那个循环语句中的退出循环判断语句,达到简化程序的作用。

这个循环语句只是比上面的那个循环多了个WHILE<逻辑表达式>,运行的原理还是和上面的循环语句一样的,同样是DO是循环的开头,每循环一次都从DO下面的语句开始,最后以LOOP结束,直到退出循环。

我们要将B列成绩为81-90的,在相对应的C列写上”良”,实例如下:

Sub aa()

Dim a%

A=2

Do while cells(a,2) <>””

If cells(a,2) > 80 and cells(a,2) <= 90 then cells(a,3) =”良”

A=a+1

Loop

End sub

这样写是不是要比上面的那种循环要简化一些?

3. DO UNTIL…..LOOP循环语句

格式:do until <逻辑表达式>

<执行语句>

[执行语句]

……

Loop

这个循环语句和第二个循环语句的用法是一样的,只不过第二个循环语句的逻辑表达式为真时执行循环里的执行语句,而这个刚好相反,当这个语句的逻辑表达式的值为真时,退出循环。怎么样?是不是觉得很神奇,或者也可以说是无聊。不过存在就有意义,有时就会有用到它的时候,只不过你还没有发现。

如果用这个循环语句再做一次上面的作业,其实就是把逻辑表达式的运算符换一下而已:Sub aa()

Dim a%

A=2

Do until cells(a,2) = ””

If cells(a,2) > 80 and cells(a,2) <= 90 then cells(a,3) =”良”

A=a+1

Loop

End sub

趣味小例-隔行填色

Sub aa()

Dim a%

A=2

Do until sheet1.range(“a” & a) = “”

Range.range(“a” & a & ”:g” & a).interior.colorindex=7

A=a+1

Loop

End sub

这段程序里,interior为这个单元格的底,color是颜色的意思,index为设置成,7是颜色的代码,这里7是紫色,这段意思是将选定的区域底色设置成紫色。

小结:以上三种循环语句,称为DO….LOOP循环语句,实事上,VBA的编写具有很大的灵活性,如第二种循环里的while<逻辑表达式>和第三种循环语句里的until<逻辑表达式>,不仅可以放在DO的后面,它还可以放在LOOP的后面。例:

Sub aa()

Dim a$

Do

A = inputbox(“请输入密码:”)

Loop until a=”123”

End sub

上面这段代码运行后,会弹出一个可输入数据的对话框,你只有在对话框里输入了”123”(引号不用输入),才会退出循环,那么until放在DO后和放在LOOP有什么区别呢?它的区别在于放在LOOP后的循环次次要比放在DO后少循环一次。这里如果把until换成while会怎么样呢?意思刚好相反,只有输入”123”才循环,输入错误就退出循环。

如果在运行后,而你忘了或不知道密码是多少,这又会成了死循环,我们还可以限制一下次数:

Sub aa()

Dim a$ b!

Do

B=b+1

If b > 3 then exit do

A = inputbox(“请输入密码(最多输入三次):”)

Loop until a=”123”

End sub

从上面这些就可以看出,其实上面三种循环语句其实可以统称为DO…..LOOP循环语句,它的完整格式是这样的:

Do [{while | until}<逻辑表达式>]

<执行语句>

[执行语句]

[exit do ]

[执行语句]

Loop

或者:

Do<执行语句>

[执行语句]

[exit do ]

[执行语句]

Loop [{while | until}<逻辑表达式>]

注:1.用while时,逻辑表达式为真就循环,用until时,逻辑表达式为真时退出循环。

2.while或until即可以放在DO的后面,也可以放在LOOP的后面,区别在于放在DO的后面是先判断再循环,而放在LOOP的后面是先循环再判断。

3. DO….LOOP通常和判断语句+ EXIT DO结合使用,在一个循环里面还可以放置多个判断语句+ EXIT DO以便能随时退出循环。

4.exit do的意思是退出循环。但它只能退出所在循环内的循环,在以后还会用到多层循环套用,在那种情况下,如果执行到exit do,程序只能退出它所在的循环,再次进入到离它最近的外循环里去。

5.如果出现死循环,可以按ctrl+break组合键来结束运行。

二.FOR…..NEXT循环语句

1.For each…….next循环语句

格式:for each <对象> in <集合>

<执行语句>

[执行语句]

…..

Next

这个循环语句,同样需要有条件才能退出,但却没有用到逻辑表达式,在这个循环语句里的循环条件就是<集合>里的所有<对象>,从第一个对象开始,循环一遍后再指向

上面这个表格假定为我们当前打开的工作簿的工作表1,我们要让姓名为A1的单元格变成红色,代码如下:

Sub aa()

Dim a as range

For each a in sheet1.range(“a2:a6”)

If a = “A1” then a.interior.colorindex = 3

Next

End sub

在这个程序里,我来逐句解释一下

1.首先我们定义了一个对象a,range是对象型数据,不同于以前的数据类型,在这里

也可以把它理解为把变量a定义成一个单元格型数据。

2.在第二句里,a就是这个语句里的<对象>,sheet1.range(“a2:a6”)是一个集合,在这

里它代表一个区域,就是指从A1到A6的这块单元格区域,循环的条件就是从A 列的第一个单元格到A列的第六个单元格。这里也可以理解为在从A1到A6这个区域里取出每个单元格,直到取完为止,也就是说这个区域里有多少个单元格就循环多少次。

3.循环里只有一个判断,只有当这个单元格的内容为”A1”时才会将当前的活动单元格

变成红色。3是红色的代码,interior指的是这个单元格的底,即背景色,interior.colorindex合在起就是设置背景色颜色的意思,前面加上a.就是指设置变量a所指的单元格背景色,整句if的意思就是,如果(if)当前变量a所指的单元格内容为”A1”(a=”A1”)那么(then),它所在的单元格背景色赋值为红色a.interior.colorindex = 3。

4.经过next后,程序又将指针指向for处,每执行一次循环,当前的活动单元格就会

指向集合中的下一个单元格,直到所有对象操作完,退出循环。

For each…enxt循环语句对于初学者,会感觉像和以前的思维不一样了,有点难以理解,下面我再举个例子,看的多了也就能想通了。

下面这个例子是把当前打开工作簿内的工作表名依次输入到第一个表的第三列,从第一个单元格开始,一个单元格显示一个工作表名,有几个工作表显示几行。

sub aa()

Dim a as worksheet,n as byte

For each a in worksheets

N=n+1

Sheet1.cells(n,3) = https://www.doczj.com/doc/7b17956379.html,

Next

End sub

下面我再逐步解释一下:

1.第一行还是定义变量,这次把a定义成了一个工作表型数据。用dim定义变

量,可以一次定义多个变量,各个变量之间须用逗号分开。

2.第二行循环开始,循环的条件是从在当前的工作表集合中逐个对对象a(现

在它是个工作表)进行操作。第一次循环时它就是第一个工作表,如果是新

建的工作簿,它就是sheet1,第二次循环时,它就是sheet2,直到所有的工

作表操作完,退出循环。

3.第三句中的n,用dim定义后,我们并没有为它赋值,在执行这句之前,n

的默认值是0,执行这句后变量n就成了1,在下句Sheet1.cells(n,3)中引用

这个变量时,n就代表行数。有了这个变量,我们就能在逐个将工作表名分

别赋值到相对应的单元格内,如果没有这个变量,我们就只能在指定的固定

单元格赋值,程序运行到最后,这个单元格内显示的也只是最后一个工作表

名。在定义这个变量时,我们用了byte这个单字节类型。但不要望文

生义,这个单字节并不是只能占一个字节,并不是只能在0-9之内,一个字

节在内存中占的是一个八位的二进制单位,这个单字节实际上的范围是

0-255。

4.第四句是个赋值的语句,Sheet1.cells(n,3) = https://www.doczj.com/doc/7b17956379.html,语句中:= 前面的的意思

是第一个工作表(sheet1)内第n行,第3列单元格(cells(n,3)),sheet和

cells之间用”.”来连接,= 后面是a工作表名字(https://www.doczj.com/doc/7b17956379.html,)在这里如果是a

的后面没有加上”.name”,运行后就会出现“应用程序定义或对象定义错误

“的提示,这是因为我们定义的变量a是一个工作表类型的数据,它不像字

符型或数据型等可以显示在单元格内,在加上了”.name”之后,那么就是这

个工作表的名字,名字是可以显示在单元格内的。理解这一点可以有点难度,

但真正理解之后,就能达到“山穷水穷疑无路,柳暗花明又一村”的境界。

5.next 将运行指针返回到for each处,如果还有工作表,就执行再执行循环的

内容,直到不再有工作表了。

2. for…..next循环语句

格式:for <数值型赋值> to <数值型变量或常量> [step <步长>]

<执行语句>

[执行语句]

……

Next

注:1. 在for 后必须是一个变量的数值型赋值,如a=1,这里的变量就是一个对象,它必须是一个数值。

2.在to后则必须是一个数值型数据,可以是常量,也可以是变量。它其实就是一个数值集,一个能从to前变量值到这个数值之间的数值集。

3.for….next与do…loop最大的区别在于,for…next循环语句有个内置的计数器step,在缺省的情况下step默认为是step 1,意思是每循环一次,for后面的变量值+1,如果是step 2,就是每循环一次,for后面的变量值是+2,这个步进不仅可以累加,也可以累减,如果是step -1,那每循环一次,for后面的变量值就会-1,用setp一定要注意,这个步进一定要能从for后的变量值能to后数值的步进。不然又会成为死循环。

举例:1到100的累加,以对话框的形式显示出来。

Sub aa()

Dim a!,b!

For a=1 to 100

B=b+a

Next

Msgbox b

End sub

在这段程序中,第三句for后面的a就相当于一个对象,a=1,就是要让变量a 为1时开始循环,to后面的100就是一个数值集,这个集的内容就是1-100,由于这个程序的步进是累加所有集是1-100,如果是for a=100 to 1 step -1,那这个集就是100-1了。这个集也只是在这一行适用,如果是写成for a=1 to 100 step -1,步进就变成了累减,由于给a赋的值是集的开始,to后是集的结束,step -1会超出集1-100的范围,这时系统不会报错,只是不执行循环,而直接执行next后面的语句。过了这一句,这个集就只认不大于100,而不认不小于1了,即使a的值为-100,也不会退出循环,也就是说如果这个步进是1→100,只有当a值大于100时才退出循环,而不管是不是小于1,如果这个步进是100→1,就只有当a值小于1时才退出循环,而不管是不是大于100。亲,懂?

这段程度就是计算1-100的累加和,相当于1+2+3+…..+100=? ,其中变量a 是需要累加的数,第一次循环为1,第二次循环是2,第100次是100,超过100退出循环,变量b为每次累加的和,循环之初为0,第一次循环a是1,和就是1,第二次循环时,a是2,和就是上次的和加上这次的2,直到a是100,退出循环,以窗口的形式(msgbox b)显示出累加的值。

如果是1-100内的奇数累加,我们就可以写成这样:

Sub aa()

Dim a!,b!

For a=1 to 100 step 2

B=b+a

Next

Msgbox b

End sub

步进数是2,也就是说每循环一次,a=a+2,第一次循环是1第二次循环是3,最后一次循环是99,再然后是101就超出集的范围,不再累加面退出循环。

如果是1-100内的偶数累加只需要赋值时,将a赋值为2就可以

在这里如果用累减的步进也是一样的,只不过如果是奇数累加将For a=1 to 100 step 2写成for a=99 to 1 step -2,如果是偶数累加则写成for a=100 to 1 step -2,

注意循环的起点值也很重要。

的单价和数量把金额填到相对应的单元格内:

Sub aa()

a = Sheets(1).[A65536].End(xlUp).Row

for b=2 to a

sheet1.cell(b,4) = sheet1.cells(b,2)*sheet1.cells(b,3)

next

end sub

逐句分析:

1.这里我们用到一个新语句Sheets(1).[A65536].End(xlUp).Row,这里我们

可以理解为:第一个工作表(Sheets(1))里A列所有区域里([A65536])

从最后一行向上(End(xlUp))第一个非空单元格所在的行号,在这一

句里就是把这个行号值赋于变量a,这句以后会经常用到。

2.循环的范围是从第二行开始,到A列的最后一个非空单元格。

3.在第一个工作表sheet1,第b行第4列cells(b,4)赋值为:第b行第2列

的数据与第b行第3列的数据的积clees(b,2)*clees(b,3)。

4.循环至所有A列非空单元格。

小节:

以上两种循环语句称为:FOR…..NEXT循环语句。这种FOR循环,我们也可以理解为,对象在集合中的依次出现的循环,只不过第一种FOR是非数值型的对象与集合,第二种FOR是数值型的对象与集合。

在DO循环里有一种随时退出循环的命令EXIT DO,在FOR循环里也有一种随时退出循环的命令:EXIT FOR。

第一种FOR循环比较抽象,不容易理解,我们经常用到的是第二种FOR循环。三.多层循环(循环的嵌套使用)

在循环的嵌套使用中,应注意内循环完全在外循环之内,不可以交错使用。

多层循环可以是双层循环,也可以是多层循环,只要你需要用到,就可以一直嵌套下去,直到满意为止。

它可以是DO…LOOP套DO….LOOP,FOR…NEXT套FOR…NEST,也可以是DO…LOOP套FOR…NEXT,FOR…NEXT套DO…LOOP。

循环里用到的退出循环有三个:EXIT DO,EXIT FOR,EXIT SUB。EXIT DO是退出离它最近的DO循环,EXIT FOR是退出离它最近的FOR循环,EXIT SUB是直接退出宏运行。

虽然多层循环时,循环不可以交错使用,但在设计时却提供了能直接退出到它的上上级循环处。甚至直接退出宏运行。例:

Sub aa()

Aa=0

For a=1 to 10

Aa=aa+1

B=1

Do

B=b+1

If b>5 then exit for

Loop

Next

Msgbox “外层循环共循环了” & aa & “遍”

End sub

在这个循环里,就用到了双层循环,并且是FOR循环套DO循环。并且在内循环DO 语句里用到了EXIT FOR。,下面逐步讲解一下:

1.为aa变量赋值为0,这个变量会出现在外层循环里,用它的意思是让它来代表

外循环的次数。为什么不能用外循环里的变量a来表示外循环的次数呢?因为外

循环FOR…NEXT每完整的循环一次,循环的次数就是a-1,而内循环里用了

EXIT FOR,第一次循环是执行了一次,但没有完整的执行就直接跳到外循环

NEXT下面的一句,外循环的次数就是a。而用aa来代表循环的次数就没有这个

情况,FOR循环了几次,aa就累加几数,aa就是循环的次数。

2.设置外循环的条件是变量a的值从1到10,我们预设外循环共十次。

3.aa=aa+1在第1条里讲了,只是计算外循环累加的次数,不再敖述。

4.设置b变量只是为了让内循环有个退出的条件。没有其它的意思

5.内循环开始

6.为内循环退出制造条件,让变量b累加。

7.这里用了个单行的判断语句。让变量b>5时退出,而且是退出最近的FOR循环,

去执行最近的FOR循环LOOP下面的语句。

8.为DO循环结束。不管这句在程序运行中有没有执行到,我们必须为DO循环设

置个结束。

9.为FOR循环结束。在这里可以看出DO…LOOP完全在FOR…NEXT之内,如果

将LOOP和NEXT换下位置,就会提示错误。

10.以窗口的形式显示外循环的次数。

运行这段代码之后就会看到弹出个窗口:外层循环共循环了1遍,这是因为在b值6时执行了EXIT FOR,就直接执行MSGBOX语句了。这时你也许会问,这个EXIT FOR是不是退出所有的FOR循环呢?那我们再用个FOR循环,来个三层嵌套循环:Sub aa()

Dim aa!,cc!

For c=1 to 10

Cc=cc+1

For a=1 to 10

Aa=aa+1

B=1

Do

B=b+1

If b>5 then exit for

Loop

Next

Next

Msgbox “外循环” & cc & “遍,中循环” & aa & “遍”

End sub

这段代码执行后,就看到提示:外循环10遍,中循环10遍。这里的意思是外循环每循环一次,中循环也只跟着循环了一次,EXIT FOR退出的只是最它最近的那个NEXT。如果内层循环里用的是EXIT DO,就会提示:外循环10遍,中循环100遍。

这时有细心的朋友可能就会问了,你怎么写代码不是左对齐呀?其实这不是个性,也不是为了花哨。而是有规则的:在写代码时,特别是多层循环第一层循环的开关在纵向上要与结尾对齐,第二层循环要比第一层循环向右一部分。并且开关与结尾也要纵向对齐,依次类推。这样写的好处在于能够让代码清晰易懂,不容易出错。如果你非要左对齐也没有关系,没办法,脑子好,任性。

Excel之VBA编程常用语句300句汇总

Excel之VBA编程常用语句300句 时间:2009-11-27 21:12:21 来源:本站作者:未知我要投稿我要收藏投稿指南 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 Option Base 1 '指定数组的第一个下标为1 (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False '关闭屏幕刷新 Application.ScreenUpdating=True '打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() '创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿 (10) ThisWorkbook.Save '保存工作簿 (11) ThisWorkbook.close '关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数 (13) https://www.doczj.com/doc/7b17956379.html, '返回活动工作薄的名称 (14) https://www.doczj.com/doc/7b17956379.html, ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleT iled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化 工作表 (18) https://www.doczj.com/doc/7b17956379.html,edRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _

SQL中的case-when,if-else实例

create database EXAM go create table student (stuName varchar(10)not null, stuNO int primary key not null, stuSex char(2)check(stuSex='男'or stuSex='女'), stuAge int, stuSeat int, stuAddress varchar(40) ) GO insert into student values('张秋丽','25301','女','21','1','北京海淀'), ('李文才','25302','男','25','2','天津'), ('张三','25303','男','22','3','北京海淀'), ('红尘','25304','女','21','4','湖南长沙'), ('段林希','25305','女','20','5','江西赣州'), ('魏晨','25306','男','23','6','河北石家庄'), ('郑爽','25307','女','20','7',''), ('张杰','25308','男','21','8',''), ('王洁','25309','女','23','9','湖南怀化'), ('刘欣','253010','女','21','10','北京') create table exam (ExamNO int primary key, stuNO int not null, WrittenExam int, LabExam int ) GO insert into exam values(01,250301,86,89), (02,250302,67,78), (03,250303,76,80), (04,250304,79,56), (05,250305,56,63), (06,250306,67,60), (07,250307,90,83), (08,250308,80,79), (09,250309,92,90), (10,250310,55,58)

excelvba常见字典用法集锦及代码详解(全)

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来

给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是

VBA 常用语句

VBA 常用语句汇总 1.Excel 连接Access:工程引用前勾选Microsoft DAO 3.6 Object Library 2.Excel 与Access建立连接并查询数据: Set conn = CreateObject("adodb.connection")(建立数据库) Set rs = CreateObject("adodb.recordset")(建立) conn.Open "Provider =microsoft.ACE.oledb.12.0; Data Source(驱动) =" & link(连接) SQL = "select * from [Excel 12.0(驱动);hdr=no(无标题);Database=" & ThisWorkbook.FullName & "].[Adjust$k2:m]as a left join[参数]on(a.f1=[参数].[Topcode]) and (a.f2=[参数].[BOM 版本]) and (a.f3=[参数].[BOM 状态])" rs.Open SQL, conn Set yy = conn.Execute(SQL) 3.定义字典 Set d = CreateObject("scripting.dictionary") 4.状态栏显示内容 Application.StatusBar = "☆☆☆☆程序正在运行,请稍后……☆☆☆☆"(显示内容) Application.StatusBar = ""(还原显示) 5.关闭/开启错误提示 Application.DisplayAlerts = False(关闭错误提示) Application.DisplayAlerts = True(开启错误提示) 6.获取最后一个非空单元格对应的行和列 r=Range("a:a").Find(What:="*",After:=[a1],searchorder:=xlByRows,SearchDirection:=xlPrevio us).Row [a:a].Find("*", , xlValues, , , xlPrevious).Row c=Range("1:1").Find(What:="*",After:=[a1],searchorder:=xlByRows,SearchDirection:=xlPrevio us).Column 7.设置单元格边框 With Range()(所要设置的区域) .Borders(xlEdgeLeft).Weight = xlThin .Borders(xlEdgeLeft).ThemeColor = 1 .Borders(xlEdgeLeft).TintAndShade = -0.499984740745262 .Borders(xlEdgeTop).Weight = xlThin .Borders(xlEdgeTop).ThemeColor = 1 .Borders(xlEdgeTop).TintAndShade = -0.499984740745262 .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeBottom).ThemeColor = 1 .Borders(xlEdgeBottom).TintAndShade = -0.499984740745262 .Borders(xlEdgeRight).Weight = xlThin .Borders(xlEdgeRight).ThemeColor = 1

项目开发中常用到的SQL语句

项目开发中常用到的SQL语句1、循环示例 循环示例代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 DECLARE @i int DECLARE @name varchar(10) DECLARE @password varchar(10) Set @i = 1000 WHILE @i < 1200 BEGIN Set @i =@i +1 SET @name = RIGHT('0000' + CAST(@i AS varchar(10)),4) set @password = @name select @name insert into dbo.LocomotiveTeminalBase (li_ID,t_ID,lt_IDNumber,lt_MiM,lt_FuWQIP,lt_FuWQDKH,lt_CreatedBy) values('d82575c0-2d21-4c47-a406-7771d7d2c80a','fb5d9a7b-9cd6-4a55-9e90-881706eaf @name,@password,'192.168.1.187','2000','9015c234-e185-4e15-96c6-f53426dd6690') END 2、数据库缓存依赖中用到的SQL语句代码示例: ? 1 2 3 4 5 6 7 8 --查看状态 Select DATABASEpRoPERTYEX('soft_LocomotiveRM_DB','IsBrokerEnabled') --启用broker ALTER DATABASE soft_LocomotiveRM_DB SET NEW_BROKER WITH ROLLBACK IMMEDIATE ALTER DATABASE soft_LocomotiveRM_DB SET ENABLE_BROKER --添加用户

Excel+vba入门教程

VBA入门系列讲座 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用excel的宏语言来使excel自动化,使用word BASIC使word自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是”寄生于”VB应用程序的版本.VBA和VB的区别包括如下几个方面: 1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(excel 等)自动化 2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序. 3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序 是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的”父”应用程 序,例如excel. 尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在excel中用VBA创建解决方案后,即已具备在word access OUTLOOK FOXPRO PROWERPOINT中用VBA创建解决方案的大部分知识. ●VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化. ●VBA可以称作excel的“遥控器”. VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案. 此外,如果你愿意,还可以将excel用做开发平台实现应用程序. 1.2 Excel环境中基于应用程序自动化的优点 也许你想知道VBA可以干什么?使用VBA可以实现的功能包括: 1. 使重复的任务自动化. 2. 自定义excel工具栏,菜单和界面. 3. 简化模板的使用. 4. 自定义excel,使其成为开发平台. 5. 创建报表. 6. 对数据进行复杂的操作和分析.

DB2常用SQL语句集

DB2常用SQL语句集 1、查看表结构: describe table tablename describe select * from tablename 2、列出系统数据库目录的内容: list database directory 3、查看数据库配置文件的内容: get database configuration for DBNAME 4、启动数据库: restart database DBNAME 5、关闭表的日志 alter table TBLNAME active not logged inially 6、重命名表 rename TBLNAME1 to TBLNAME2 7、取当前时间 select current time stamp from sysibm.sysdummy1 8、创建别名 create alias ALIASNAME for PRONAME(table、view、alias、nickname) 9、查询前几条记录 select * from TBLNAME fetch first N rows 10、联接数据库 db2 connect to DB user db2 using PWD 11、绑定存储过程命令 db2 bind BND.bnd 12、整理优化表 db2 reorgchk on table TBLNAME db2 reorg table TBLNAME db2 runstats on table TBNAME with distribution and indexes all 13、导出表 db2 export to TBL.txt of del select * from TBLNAME db2 export to TBL.ixf of ixf select * from TBLNAME 以指定分隔符‘|’下载数据: db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode”14、导入表 db2 import from TBL.txt of del insert into TBLNAME db2 import from TBL.txt of del commitcount 5000 insert into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 insert into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 insert_update into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 replace into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 create into TBLNAME (仅IXF) db2 import from TBL.ixf of ixf commitcount 5000 replace_create into TBLNAME (仅 IXF) 以指定分隔符“|”加载:

sql循环语句的写法

sql循环语句的写法 SQL循环语句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end --------------- while 条件 begin 执行操作 set @i=@i+1 end WHILE 设置重复执行SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK 和CONTINUE 关键字在循环内部控制WHILE 循环中语句的执行。语法WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] 参数

Boolean_expression 返回TRUE 或FALSE 的表达式。如果布尔表达式中含有SELECT 语句,必须用圆括号将SELECT 语句括起来。{sql_statement | statement_block} Transact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字BEGIN 和END。BREAK 导致从最内层的WHILE 循环中退出。将执行出现在END 关键字后面的任何语句,END 关键字为循环结束标记。CONTINUE 使WHILE 循环重新开始执行,忽略CONTINUE 关键字后的任何语句。注释 如果嵌套了两个或多个WHILE 循环,内层的BREAK 将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。示例 A. 在嵌套的IF...ELSE 和WHILE 中使用BREAK 和CONTINUE 在下例中,如果平均价格少于$30,WHILE 循环就将价格加倍,然后选择最高价。如果最高价少于或等于$50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过$50,然后退出WHILE 循环并打印一条消息。USE pubs GO WHILE (SELECT A VG(price) FROM titles) < $30 BEGIN

实验10 T-SQL语言编程基础

实验十 T-SQL语言编程基础 姓名:学号: 专业:网络工程班级: 同组人:无实验日期:2012-4-19【实验目的与要求】 1.熟练掌握变量的定义和赋值。 2.熟练掌握各种运算符。 3.熟练掌握流程控制语句,尤其是条件语句和循环语句。【实验内容与步骤】 10.1. 变量的定义与输出 1.变量的定义和赋值 1) 局部变量的声明: DECLARE @variable_name DataType 例如: declare @stuname varchar(20)--声明一个存放学员姓名的变量stuname. declare @stuseat int--声明一个存放学员座位号的变量stuseat 2) 局部变量的赋值: 局部变量的赋值有两种方法: a) 使用Set语句 Set @variable_name=value b) 使用Select语句 Select @variable_name=value 实验: 运行以下程序段,理解变量的使用。

--局部变量的赋值与使用 declare @customer_name varchar(20)--声明变量用来存放客户名称 set @ customer_name ='家电市场'--使用SET语句给变量赋值 select* from xss where客户名称=@customer_name --通过局部变理向sql语句传递数据 请给出运行结果: 练习: 创建一名为 Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。 给出相应的语句 declare @Product_name varchar(20) set @Product_name ='冰箱' select价格,库存量 from CP where产品名称= @Product_name 请给出运行测试结果:

最常用的 Excel VBA语法200句

[VBA] 语法200句 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示Option CompareText '字符串不区分大小写 Option Base 1 '指定数组的第一个下标为1 (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoToErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5)Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6)Application.ScreenUpdating=False '关闭屏幕刷新 Application.ScreenUpdating=True'打开屏幕刷新 (7)Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() '创建一个新的工作簿 (9) Workbooks(「book1.xls」).Activate '激活名为book1的工作簿 (10) ThisWorkbook.Save '保存工作簿 (11) ThisWorkbook.close '关闭当前工作簿 (12)ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数 (13) https://www.doczj.com/doc/7b17956379.html, '返回活动工作薄的名称 (14) https://www.doczj.com/doc/7b17956379.html, 『返回当前工作簿名称 ThisWorkbook.FullName 『返回当前工作簿路径和名称 (15)ActiveWindow.EnableResize=False 『禁止调整活动工作簿的大小 (16)Application.Window.Arrange xlArrangeStyleTiled 『将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized『将当前工作簿最大化 工作表 (18)https://www.doczj.com/doc/7b17956379.html,edRange.Rows.Count 『当前工作表中已使用的行数 (19) Rows.Count 『获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= 「Sum」'将Sheet1命名为Sum (21) ThisWorkbook.Sheets.AddBefore:=Worksheets(1) '添加一个新工作表在第一工作表前 (22) ActiveSheet.MoveAfter:=ActiveWorkbook. _

实验7_T-SQL语言编程基础[1]1

实验七T-SQL语言编程基础 【实验目的与要求】 1.熟练掌握变量的定义和赋值。 2.熟练掌握各种运算符。 3.熟练掌握流程控制语句,尤其是条件语句和循环语句。 【实验内容与步骤】 一、准备实验数据 CPXS数据库包含如下三个表: CP(产品编号,产品名称,价格,库存量); XSS(客户编号,客户名称,地区,负责人,电话); CPXSB(产品编号,客户编号,销售日期,数量,销售额); 三个表结构如图2.1~图2.3所示,请在企业管理器中完成表的创建。 图2.1CP表结构

图2.2XSS表结构 图2.3CPXSB表结构 2.1数据写入操作 在企业管理器中输入如图2.4~图2.6的CP表、XSS表和CPXSB表的样本数据。 图2.4CP表的样本数据

图2.5XSS表的样本数据 图2.6CPXSB表的样本数据 10.1.变量的定义与输出 1.变量的定义和赋值 1)局部变量的声明: DECLARE@variable_name DataType 例如: declare@stuname varchar(20)--声明一个存放学员姓名的变量stuname. declare@stuseat int--声明一个存放学员座位号的变量stuseat 2)局部变量的赋值: 局部变量的赋值有两种方法: a)使用Set语句 Set@variable_name=value b)使用Select语句 Select@variable_name=value 实验: 运行以下程序段,理解变量的使用。 --局部变量的赋值与使用 declare@customer_name varchar(20)--声明变量用来存放客户名称set@customer_name='家电市场'--使用SET语句给变量赋值select* from xss where客户名称=@customer_name--通过局部变理向sql语句传递数据请给出运行结果:

vba常用代码大全

前言 我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。 第1.1例 ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。 二、代码: Sub 示例_1_01() Dim myNum1%, myNum2% myNum1 = Asc("Excel") '返回69 myNum2 = Asc("e") '返回101 [a1] = "myNum1= ": [b1] = myNum1 [a2] = "myNum2= ": [b2] = myNum2 End Sub 三、代码详解 1、Sub 示例_1_01():宏程序的开始语句。 2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。

也可以写为 Dim myNum1 As Integer 。Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符 号 (%)。 3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。 Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。 语法 Asc(string) 必要的 string(字符串)参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。 4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e 的ASCII代码101。 5、[a1] = "myNum1= ": [b1] = myNum1:把字符串“myNum1= “赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、[a2] = "myNum2= ": [b2] = myNum2:把字符串“myNum2= “赋给A2单元格,把变量myNum2的值赋给B2单元格。 7、End Sub:程序的结束语句,和“Sub示例_1_01()”相对应。 第1.2例 Chr函数 一、题目"": 要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。 二、代码: Sub 示例_1_02()

SQL循环语句的写法

SQL循环语句的写法 SQL循环语句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end --------------- while 条件 begin 执行操作 set @i=@i+1 end WHILE 设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。 语法 WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] 参数 Boolean_expression 返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。 {sql_statement | statement_block} Transact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字 BEGIN 和 END。 BREAK

导致从最内层的 WHILE 循环中退出。将执行出现在 END 关键字后面的任何语句,END 关键字为循环结束标记。 CONTINUE 使 WHILE 循环重新开始执行,忽略 CONTINUE 关键字后的任何语句。 注释 如果嵌套了两个或多个 WHILE 循环,内层的 BREAK 将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。 示例 A. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE 在下例中,如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过 $50,然后退出 WHILE 循环并打印一条消息。 USE pubs GO WHILE (SELECT AVG(price) FROM titles) < $30 BEGIN UPDATE titles SET price = price * 2 SELECT MAX(price) FROM titles IF (SELECT MAX(price) FROM titles) > $50 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear' B. 在带有游标的过程中使用 WHILE 以下的 WHILE 结构是名为 count_all_rows 过程中的一部分。下例中,该 WHILE 结构测试用于游标的函数 @@FETCH_STATUS 的返回值。因为 @@FETCH_STATUS 可能返回–2、-1 或 0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取(0) 后将执行 BEGIN...END 循环内部的 SELECT 语句。 USE pubs DECLARE tnames_cursor CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

VBA语法基础(上下)

VBA语法基础(上) - - - - - - - - - - - - - - - - - - 数据类型 “数据类型”是指如何将数据存储在内存中。 (1)Boolean 表示逻辑数据,可以是True或False中的任一个值。占用2字节的存储空间,取值范围为True或False,缺省值为Fal se。 (2)Byte 只能表示正数。占用1字节的存储空间,取值范围为0-255,缺省值为0。 (3)Currency 一种保存货币值数据的特殊数字格式。占用8字节的存储空间,取值范围为-922337203685477.5808-9223372036854 77.5807,缺省值为0。 (4)Date 一种用于表示日期或时间的专用格式。占用8字节的存储空间,取值范围为100年1月1日——9999年12月31日,缺省值为00:00:00。(有关在VBA中使用日期和时间的详细介绍请见后面的一系列文章。) (5)Decimal 一种包含以10的幂为刻度的十进制数的变体子类型,只能通过CDec转换函数创建,不是一种独立的数据类型。占用

14字节的存储空间,取值范围为±79228162514264337593 543950335(不带小数点)或±7.92281625142643375935439 50335(带28位小数点),缺省值为0。 (Decimal数据类型是在Excel 2000中引入的,在以前的版本中不能使用这种数据类型。该数据类型非常特殊,因为不能实际声明它,它是Variant的子类型,必须使用CDec函数将一个变量转换为Decimal数据类型) (6)Double 存储双精度浮点数,占用8字节的存储空间,取值范围为负值:-1.79769313486232E308——4.94065645841247E-32 4,正值:1.79769313486232E308——4.94065645841247 E-324,缺省值为0。 (7)Integer 表示从-32768-32767之间的整数,其中一位表示符号,占用2字节的存储空间,缺省值为0。 (8)Long 表示存储为4个字节空间的带符号的数,其中一位表示符号,取值范围为-2147483648-2147483647,缺省值为0。(9)Object 包含对某个对象的引用(地址),占用4字节的存储空间,可对任何对象引用,缺省值为Nothing。 (10)Single

大数据的库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old defini tion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

常用VBA基础语句

常用VBA语句 (1)Option Explicit '强制对模块内所有变量进行声明 (2)Option Base 1 '指定数组的第一个下标为1 (3)On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息 (4)On Error GoTo 100 '当错误发生时跳转到过程中的某个位置 (5)On Error GoTo 0 '恢复正常的错误提示 (6)Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (7)Application.DisplayAlerts=True '在程序执行过程中 (8)Application.ScreenUpdating=False '关闭屏幕刷新 (9)Application.ScreenUpdating = True '打开屏幕刷新 (10)Workbooks.Add() '创建一个新的工作簿 (11)Workbooks(“book1.xls”).Activate '激活名为book1的工作簿 (12)T hisWorkbook.Save '保存工作簿 (13)T hisWorkbook.close '关闭当前工作簿 (14)ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数 (15)https://www.doczj.com/doc/7b17956379.html, '返回活动工作薄的名称 (16)T https://www.doczj.com/doc/7b17956379.html, ‘返回当前工作簿名称 (17)T hisWorkbook.FullName ‘返回当前工作簿路径和名 (18)(18) https://www.doczj.com/doc/7b17956379.html,edRange.Rows.Count ‘当前工作表中已使用的行数 (19)R ows.Count ‘获取工作表的行数(注:考虑兼容性) (20)Sheets(Sheet1).Name= “Sum”'将Sheet1命名为Sum (21)ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前 (22)ActiveSheet.Move After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count) '将当 前工作表移至工作表的最后 (23)Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2 (24)Sheets(“sheet1”).Delete或Sheets(1).Delete '删除工作表1 (25)https://www.doczj.com/doc/7b17956379.html,edRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (26)Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (27)A ctiveCell.CurrentRegion.Select选择当前活动单元格所包含的范围,上下左右无空行 (28)Cells.Select ‘选定当前工作表的所有单元格 (29)Range(“A1”).ClearContents '清除活动工作表上单元格A1中的Selection.ClearContents '清除选定区域内容Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式 (30)Cells.Clear '清除工作表中所有单元格的内容 (31)A ctiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列 (32)Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中 (33)R ange(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中 (34)R ange(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开 始的区域中 (35)R ange(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '复制包含A1的

分享高性能批量插入和批量删除sql语句写法

分享高性能批量插入和批量删除sql语句写法 一,技术水平总能在扯皮和吹毛求疵中得到提高。如果从来不“求疵”,可能就不会知道if(str != "")不如if(str != string.Empty)高效、批量插入和删除的sql语句是要那样写才执行最快、接口和抽象类的区别不仅是语言层面、原来权限管理是要这样设计的、某个类那样设计职责才更单一更易于扩展…… 本来前两篇文章是学习cnblogs编辑控件用的,看到跟贴的朋友询问批量插入和批量删除的问题,决定整理成文和大家分享。 我们这里讨论的只是普通sql语句如何写更高效,不考虑特殊的用文件中转等导入方式,毕竟在代码中调用sql语句或存储过程才更方便。 批量删除很简单,大家可能都用过: DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过 当用户在界面上不连续的选择多项进行删除时,该语句比循环调用多次删除或多条delete语句中间加分号一次调用等方法都高效的多。 本文重点讲述的是批量插入的写法: sql写法: INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde' --TestTable表没有主键,ID不是主键 oracle写法: INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT 2, 'bcd' From daul --TestTable表没有主键,ID不是主键 曾经测试过,这种写法插入1000条数据比循环调用1000次insert或1000条insert语句简单叠加一次调用要高效得多,大概快20多倍(调试状态不是太准)。其实很简单,就用了个union (union all 也可以),但当时得出测试结果时还是很惊喜的。 要得出这个结果需要两个条件: 1、表不能有主键或者主键是数据库默认的(sql用自动递增列,oracle用序列) 2、组合sql语句时只能直接用字符串连接,不能用参数化sql语句的写法(就是在组合的sql中用@parm做占位符,再给Command对象添加Parameter)

相关主题
文本预览
相关文档 最新文档