关键词不能为空

当前您在: 主页 > 英语 >

Excel VBA命令大全

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-22 17:14
tags:

-

2021年2月22日发(作者:额是什么意思)


本示例为设置密码窗口


(1) If ox(


请输入密码:



密码正确时执行


Else: MsgBox


密码错误,即将退出!


< p>
此行与第


2


行共同设置密码


End If


本示例为设置密码窗口


(1) X = MsgBox(


是否真的要结帐?



本示例为设置工


作表密码



t


Password:=641112 '


保护工作表并设置密码



ect Password:=641112 '


撤消工作表保护并取消密码


'


本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,


并保存其更改内容




For


Each


w


In


Workbooks If Then SaveChanges:=True End If Next w '


每次打


开工作簿时,本示例都最大化


Microsoft Excel


窗口。


State = xlMaximized '


本示例显示活动工作表的名称。


MsgBox


'


本示例保存当前活动工作簿的副本。


pyAs


下述过程


激活工作簿中的第四张工作表。


Sheets(4).Activate '


下述过程激活工作簿中的第

< p>
1


张工作表。



Worksheets(1).Activate '


本示例通过将


Saved


属性设为


True


来关闭包含本段代码的工作簿,并放弃对该工作簿的任何更改。



= True '


本示例对自动重新计算功能进行设置 ,


使


Microsoft


Excel


不对第一张工作表自



动进行重新计算。



Worksheets(1).EnableCalculation = False '


下述过程打开


C


盘上名为


MyFolder


的文件夹中的




工作簿。


(


本示例显示活动工作簿中工作表



sheet1


上单元格


A1


中的值。


MsgBox Worksheets(

< p>
本示例显示活动工


作簿中每个工作表的名称


For Each ws In Worksheets MsgBox Next ws


本示例向活动工作簿


添加新工作表


,


并设置该工作表的名称


? Set NewSheet = =


Budget


本示例将新建的工作表移到工作簿的末尾


'Private Sub Workbook_NewSheet(ByVal Sh As


Object) After:=Sheets() End Sub


本示例将新建工作表移到工作簿的末尾



'Private


Sub


App_WorkbookNewSheet(ByVal


Wb


As


Workbook,


_


ByVal


Sh


As


Object)



After:=() End Sub


本示例新建一张工作 表,然后在第一列中列出活动工作


簿中的所有工作表的名称。


Set


NewSheet


=


(Type:=xlWorksheet)


For


i


=


1


To



(i,


1).Value


=


Sheets(i).Name


Next


i




示< /p>









< p>






?


Worksheets(


当计算工作簿中的任何工作表时,本


示例对第一张工作表的


A1:A100


区域进行排序




'Private


Sub


Workbook_SheetCalculate(ByVal


Sh


As


Object) With Worksheets(1) .Range(


本示例


显示工作表


Sheet1


的打印预览。


Worksheets(


本示例保存当前活动工作簿


?



本示例保存所有打开的工作簿,然后关闭


Microsoft Excel



For Each w In


oks Next w


下例在活动工作簿的第一张工作 表前面添加








?



Count:=2,


Before:=Sheets(1)








15







my_Procedure















Now


+


TimeValue(







< br>置



my_Procedure






5




始< /p>







TimeValue(







< br>消









OnTime



< br>置





EarliestTime:=TimeValue(


_


Procedure:=


Schedule:=False


每当工作表


重新计算时,


本示例就


调整



A


列到



F


列的宽


度。



'Private Sub


Worksheet_Calculate() Columns(


本示例使活动工作簿中的计算仅使用显示的


1



数字精度。


ionAsDisplayed = True


本示例将工作表


Sheet1


上的


A1:G37



域剪下,并放入剪贴板。


Worksheets(


方法



计算所 有打开


的工作簿、工作簿中的一张特定的工作表或者工作表中指定区域的单元

< p>


格,如下表所示:


'


要计算


'



照本示例



所有打开的工作簿


' ate


(或只是


Calculate




指定工作表


'


计算指定


工作表


Sheet1 Worksheets (


指定区域


'Worksheets(1).Rows(2).Calculate



示例对自动重新计算功能进行设置,使


Microsoft Excel


不对第一张工作表自动



进行重新计算。



Worksheets(1).EnableCalculation = False


本示例计算


Sheet1


已用区域中


A


列、


B


列和


C


列的公


式。


Worksheet s(


本示例更新当前活动工作簿中的所


有链接

< br>? Link Name:=urces


本示例设置第一张工作表的


滚动区域


? Worksheets(1).ScrollArea =


本示例新建一个工作簿,提 示用户输入文件名,然


后保存该工作簿。


Set


NewBook


=



Do


fName


=


eAsFilename


Loop


Until


fName


False



Filename:=fName


本示例打开



工作簿,


然后运行


Auto_Open


宏。



本示例对活动工作


簿运行


Auto_Close


宏,然后关闭该工作簿。


With


ActiveWorkbook


.RunAutoMacros


xlAutoClose


.Close


End


With


在本示例中,


Microsoft


Excel


向用户显示活动工作簿的路径和文件名称。


'Sub


UseCanonical()


Display the full path to user. MsgBox meURLEncoded End Sub


本示例显示


当前工作簿的路径及文件名(假定尚未保存此工作簿)< /p>



MsgBox me


本示例关闭




,并放弃所有对此工作簿的更改。


W orkbooks(



示例关闭所有打开的工作簿。如果某个打 开的工作簿有改变,


Microsoft Excel


将显 示询问是否保存更


改的对话框和相应提示。



本示例在打印之前对当前活动工作簿的所有工作表重新计算


?


'Private


Sub


Workbook_BeforePrint(Cancel


As


Boolean)


For


Each


wk


In


Worksheets


ate


Next


End


Sub


本示例对查询表一中的第一列数据进行汇总,


并在数据区域下方显示第 一列数据的总



和。


Set


c1


=


Sheets(



=



(xlDown).Offset(2, 0).Formula =


本示例取消活动工作簿中的所有更改


?


AllChanges


本示例在商业问题中使用规划求解函 数,以使总利润达到最大值。


SolverSave


函数



将当前问题保存到活动工作表上的某一区域。


Worksheets(


SolverReset


SolverOptions


Precision:=0.001


SolverOK


SetCell:=Range(


_


MaxMinVal:=1, _ ByChange:=Range(


FormulaText:=100 SolverAdd CellRef:=Range(


CellRef:=Range (


_


Relation:=4


SolverSolve


UserFinish:=False


SolverSave


SaveArea:=Range(


本示例隐藏


Chart1



Chart3



Chart5



Charts(Array(




当激活工作表时,本示例对


A1:A10


区域进行排序。


'Private Sub


Worksheet_Activate() Range(








Microsoft


Excel






Link



_



xlExcelLinks






< p>
















?


AutoFilter


=


True


t


contents:=True,


userInterfaceOnly:=True






< p>





簿





?


FileAccess


Mode:=xlReadOnly


本示例使共享工作簿每三分钟自动更新一次


? dateFrequency


=


3






Sub








工< /p>



簿




Sheet1



< br>所











'Sub


ClearSheet()


Worksheets(


End


Sub








有< /p>




簿






< p>


?


yScrollBars = False


如果具有密码保护的工作簿的文件属性没有加密,则本示例


设< /p>







簿



< p>









'Sub


SetPasswordOptions()


With


ActiveWorkbook


If


.PasswordEncryptionProvider



RSA


SChannel



Cryptographic


Provider


Then


.SetPasswordEncryptionOptions


_


PasswordEncryptionProvider :=


RSA


SChannel


2



Cryptographic


Provider


_


Passwor dEncryptionAlgorithm:=


_


PasswordEncryptionKeyLength:=56, _ PasswordEncryptionFileProperties:=True End If End With End


Sub


在本示例中,如果活动工作簿不能进行写保护,那么


Microsoft Excel


设置字符串



密码以作为活


动工作簿的写密码。


'Sub UseWritePassword() Dim strPassword As String strPassword =


Set


password


to


a


string


if


allowed.


If


eserved


=


False


Then


assword = strPassword End If End Sub


在本示例中,


Microsoft Excel


打开


名为



的工作簿,设置它的密码



,然后关闭该工作簿。本示例假定名为








C:/








'Sub


UsePassword()



Dim


wkbOne


As


Workbook



Set


wkbOne


=


(


注意



Password


属性可读并返回



“********”。


End


Sub


本示例将



的当前窗口更改为显示公式。



Wor kbooks(


本示例接受活动工作簿中的所有更改


? AllChanges


本示例显示活动工作簿的路


径和名称


Sub UseCanonical() MsgBox '


消息框


[b7] = me '


当前工作簿


[b8] =


meURLEncoded '


活动工作簿


End Sub


本示例显示


Microsoft Excel


启动文件夹


的完整路径。


MsgBox


pPath


本示例显示活动工作簿中每个工作表的名称。


For


Each


ws In Worksheets MsgBox Next ws


本示例关闭除正在运行本示例的工作簿以外的其他所有工

< p>
作簿,并保存其更改内容。


For Each w In Workbooks If Then


savechanges:=True End If Next w Activate


事件


< /p>


激活一个工作簿、工作表、图表或嵌入图表时产生


此事件。



当激活工作表时,本示例对


A1:A10


区域进行排序。


Private Sub Worksheet_Activate()


Range(


K ey1:=Range(


Order:=xlAscending


End


Sub



Calculate








Worksheet


对象,在对工作表进行重新计算之后产生此事件



每当工作表重新计算时,本示例就调整


A





F < /p>








Private


Sub


Worksheet_Calculate()


Columns(


End


Sub


BeforeDoubleClick


事件



应用于


Worksheet


对象的


Activate


方法。



当双击某工作表时产生此事件 ,


此事件先于默认的双击操作。


Private Sub expression_BeforeDoubleClick(ByVal Target As Range,


Cancel As


Boolean)


expression


引用在类模块中带有事件声明的


Worksheet


类型对象的变量。


Target


必需。双击发生时最靠近鼠标指针的单元格。


Cancel


可选。当事件发生时为


False


。 如果事件过程将该


参数设为


True


,则该



过程执行完之后将不进行默认的双击操作。


BeforeRightClick


事件



应用于



Worksheet


对象的


Activate


方法。



当用鼠标右键单击某工作表时 产生此事件,此事件先于默认的右键


单击操作。


Private Sub expression_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)


expression


引用在类模块中带有事件声明的


Worksheet


类型对象的变量。


Target


必 需。右键单击发生


时最靠近鼠标指针的单元格。


Cancel


可选。


当事件发生时为


False< /p>



如果该事件过程将本参数设为


True





该过程执行结束之后不进行默认的右键单击操作。


Change


事件



当用户更改工作 表中的单元格,或


外部链接引起单元格的更改时产生此事件。


Private Sub Worksheet_Change(ByVal Target As Range)


Target


更改的区域。可以是多个单元格。



说明



重新计算引起的单元格更改不触发本事件。可使用



Calculate


事件俘获工作表重新



计算操作。



本示例将更改的单元格的颜色设为蓝色。


Private Sub


Worksheet_Change(ByVal


Target


as


Range)


ndex


=


5


End


Sub Deactivate


事件




表、


工作表或工作簿从活动状态转为非活动状态时产生此事件。


Private


Sub


object_Deactivate()


object


Chart



Workbook


或者


Worksheet


。有关对


Chart


对象使用事件的详细



信息,请参阅


Chart


对象事件













簿





< br>动




















Private


Sub


Workbook_Deactivate() e xlArrange End Sub FollowHyperlink


事件




单< /p>









< p>
















序< /p>






簿




< p>









SheetFollowHyperlink


事件。


Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)


Target Hyperlink


类型,必需。一个代表超链接目标位置的


Hyperlink


对象。



本示例对在当前活动工


作簿中访问过的所有链接保留一个列表或历史记录。


Private Sub Worksheet_FollowHyperlink(ByVal


3



Target As Hyperlink) With UserForm1 .m s .Show End With End Sub


PivotTableUpdate










簿








< br>更








Private


Sub


expression_PivotTableUpdate(ByVal Target As PivotTable) expression


引用在类模块中带有事件声


明的


Worksheet


类型对象的变量。


Target


必需。选定的数据透视表。



本示例显 示一则消息,说明数据


透视表已经更新。


本示例假定您已在类模 块中声明了



带有事件的


Worksheet


类型的对象。


Private


Sub


Worksheet_PivotTableUpdate(ByVal Target As PivotTable) MsgBox


been updated.


事件



当工作表上的选定区域发生改变时,将产生本事件。



Private Sub Worksheet_SelectionChange(ByVal Target As ) Target


新选定的区域。



< br>示例滚动工作簿窗口,


直至选定区域位于窗口的左上角。


Private


Sub


Worksheet_SelectionChange(ByVal


Target As Range) With ActiveWindow .ScrollRow = .ScrollColumn = End


With


End


Sub


< br>本










簿







sheet1







A1







MsgBox

< br>Worksheets(


本示例显示活动工作簿中每个工作表的名称。

< p>
For Each ws


In Worksheets MsgBox Next ws


本示例向活动工作簿添加新工作表,并设置该工作表的名称。



Set newSheet = =


本示例关闭工作簿




但不提示用户保存所作更改。



中的所有



更改都不会保存。


yAlerts =


False Workbooks(


本示例设置保存文件时显< /p>


示提示,要求用户输入汇总信息。


ForSummaryInfo = True


本示例显示


Microsoft


Excel


的完整路径。


Private Sub aa() MsgBox


示例显


示每一个可用加载宏的路径及文件名。< /p>


For Each a In AddIns MsgBox me Next a ChDir


语句



改变当前的目录或文件夹。


ChDir path



Power Macintosh


中,默认驱动器总是改为在


path


语句中


指定的驱动器。完整



路径指定由卷标名开始,相对路径由冒号


(:)


开始


. ChDir


可以辨认路径中指定




别名


:


ChDir



'



Macintosh




本示例显示当前路径分隔符。


MsgBox



path


separator character is


方法



将 一个指定的文件或文件夹从


一个地方移动到另一个地方。



语法


destination Move


方法语法有如下几部分:



部分





object


必需的。始终是一个


File



Folder


对象的名字。


destination

必需的。文件或文件夹要




到< /p>









< p>







CreateFolder

















Folder(foldername) reateFolder


方法有如下几部分:



部分



描述


object


必需的。始终


是一个


FileSystemObject


的名字。


foldername


必需的。字符串表达式,它标识创建的文件夹。



本示


例使用


MkDir


语句来创建目录或文件夹。如果没有指定驱动器,新目录或文件



夹将会建在当前驱动器


中。


MkDir


建立新的目录或文件夹。


Name


语句示例



本示例使用


Name


语句来更改文 件的


名称。


示例中假设所有使用到的目录或文件夹都

< p>


已存在。




Macintosh


中,


默认驱动器名称是



“HD”


并且路径部分由冒号取代



反斜线隔开。


Dim OldName, NewName OldName =



定义文件名。


Name OldName As NewName '


更改文件名。


OldName =


NewName =


更改文件名,并移动文件。



本示例显


示当前默认文件路径。


MsgBox



current


default


file


path


is



&


_


tFilePath


本示例设置替换启动文件夹。


rtupPath =


方法



如果指定的文件夹存在返回


True


,不存在返回


False




语法


Exists(folderspec)


本示


例在单元格中启用编辑。


rectlyInCell = True


程序说明:


< /p>


几种用


VBA


在单元格

< br>输入数据的方法:


Public


Sub


Writes()


1--


2


方法,最简单在



]


中输入单元格名称。


1


[A1]


=


100


'



A1


单元格输入


100



2 [A2:A4] = 10 '



A2:A4


单元格输入


10



3-- 4


方法,采用


Range(





中输入单元格名称。


3 Range(



B1


单元格输入< /p>


200



4 Range(



C1:C3


单元格 输入


300



5-- 6


方法,采用


Cells(Row,Column)

< p>


Row


是单元格行数,


Column


是单元


格栏数。


5 Cells(1, 4) = 400 '



D1


单元格输入


400



6 Range(Cells(1, 5), Cells(5, 5)) = 50 '



E1:E 5


单元格输入


50



End Sub


你点选任何单元格,按


Selection


按钮,則则所点选的单元格均


4



会被输入文字




Public Sub Selection1() =


在任何你点选的单元


格输入文字




End Sub VBALesson2


程序说明:



几种如何把别的工作表


Sheet4


数据,读到这


个工作表的方法:在被读取的单元格



前加上工作表名称


Sheet4



Public Sub Writes() 1-- 2


方法,


最简单在被读取的



]


前加上被读取的工作表名称


Sheet4



1


[A1]


=


Sheet4.[A1]


'



Sheet4


A1



元格的数据,


读到


A1


单元格。


2


[A2:A4]


=


Sheet4.[B1]


''



Shee4


工作表单元格


B1


数据,


读到


A2:A4


单元格。


3--


4


方法,在被读取的工作表


Range(




Range


前加上被读取的工作表名称


Sheet4



3


Range(



Shee4


工作表单元格


B1


数据,读




B1


单元格。


4


Range(


=


(


'



Shee4


工作表单元格


C1


数据



,读到


C1:C3


单元格。


5--


6


方法,


在被读取的工作表


Cells(Row,Column)



Cells


前加上被读取工作表



名称


Sheet4



5


Cells(1,


4)


=


(1,


4)


'



Shee4


工作表单元格


D1


数据,读




D1


单元格。


6


Range(Cells(1,


5),


Cells(5,


5))


=


(1,


5)


'



Shee4




作表单元格


E1


数据,读到


E1:E


5


单元格。


End


Sub


你点选任何单元格,



Selection


按钮,


则所点选的单元格均会被输入


Shee4




作表单元格


F1


数据。



Public Sub Selection1() = Sheet4.[F1] '



Shee4


工作表单元格


F1


数据,读到任



何你点选的单元格。


End Sub VBALesson3


程序说明:



如何利用


Worksheet_SelectionChange


输入数


据的方法。


Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target = 100 End Sub


Target


指的是你鼠标所选的单元格,


Worksheet_Selectio nChange()


事件的参数





可以是一个也可以


是好几个单元格。


Range



Excel


特有的变量形态,叫范围。


Target As Rang


是把


Target


这个参数


设定为


Range


变量形态。


Target


=


100


是把你点选的单元格输入数字


100



VBALesson4


程序说明:








Worksheet_SelectionChange


在< /p>









< p>








Private


Sub


Worksheet_SelectionChange(ByVal Target As Range) If >= 2 And = 2 Then


Target


=


100


End


If


End


Sub If


...


Then


...


End


If


这是我们学的这一个逻辑判断语句。



>=


2


,指的是鼠标选定的单元格的 行大于或等于


2



= 2


,指的是鼠标选定的单元格的栏等



2



If



>=


2


And



=


2


Then


指的是只有在



>= 2




= 2


二个条件成立时。



就是


( >= 2)


< p>
True



( = 2)



True


时,才执行下面




程序


Target=100




也就是


B


栏第二行及以下行用鼠标 被点选时,才会被输入


100



其它单 元格则不












VBALesson5











Worksheet_SelectionChange()







CommandButton1_Click()


来执行



程序二者的方法与写法有何不同。


Worksheet_Se lectionChange()





Private


Sub


Worksheet_SelectionChange(ByVal


Target


As


Range)


If



>=


2


And


= 2 Then Target = 100 End If End Sub


按鈕


CommandButton1_Click() Private Sub


CommandButton1_Click() If >= 2 And >= 3 Then ActiveCell = 100


End


If


End


Sub


二者执行方法最大的地方,在于


Worksheet_SelectionChange()


是自动的,你不用




解他是怎么完成工作的。



按钮


CommandButton1_Click()


是人工的,



SelectionChange()


多一道手续,






< p>













SelectionChange()







Target



< br>;


CommandButton1_Click ()


没有。



所以我们要用


ActiveCell


内定函数来取代


Target



Ac tiveCell




Target


最大的



不同点他只能指定一个单元格。



就是 你选取多个单元格也只有最上面的单元格会加上数


据;用


Selection


取代


ActiveCell




用法就跟


Target


一样了。


VBALesson 6


程序说明:



完整的



If...Then ┅ End 逻辑判断式。


Private Sub Worksheet_SelectionChange(ByVal Target As Range) If



>=


2


And



=


2


Then


Target


=


200


ElseIf



>=


2


And



= 3 Then


Target = 300 ElseIf


>= 2 And =


2 Then


Target


= 400


Else Target


= 500 End If End Sub


这是个完整的


If


逻辑判断式,意思是说,假如


If


後的判断式条件成立的话,




执行第二条程序,否则假如


ElseIf


後的判断式条件成立的话,就执行第四条程序



,否则假如另一



ElseIf


後的判断式条件成立的话,就执行第六条程序。


Else < /p>


的意思是说,假如以上条件都不成立的


话,就执行第八条程序。< /p>



他的执行方式是假如


IF


的条件成立的话,就不执行其它


ElseIf



Else


的逻


辑判断式,假如


If


後的条件不成立的话才会执行


ElseIf



Else


逻辑判断式。第二




ElseIf


後的


5



条件因为与


IF


後的条件一样,所以这个判断式後面的


Target=400


将是永远无法执行到的程序。



VBALesson


7


程序说明∶我们为什麽要用变数。


Private


Sub


Worksheet_SelectionChange(ByVal


Target


As Range) Dim i , j As Integer Dim k As Range i = j = Set k = Target


If i >= 2 And j = 2 Then k = 200 ElseIf i >= 2 And j = 3 Then k = 300 ElseIf i >= 2 And j = 4


Then k = 400 Else k = 500 End If End Sub



VBALesson 6


比较,程序是不是明朗多了,在前课重复


的用






Ta rget


来写程序是不是有一点烦。用变量的第一个好处大家马上




觉得出来,就是可以简化程序。



使用变量前,你得先宣告变量。宣告变量的方法是在



后面


写上变量



后面接上变量的形态




Dim i , j As Integer


就是宣告


i



j


为整


数变量,这是同时宣告二个变量


i



j


所以要在二个变量间加个



,



号。


Dim


k


As


Range


是宣告


k


为范围资料形态,


Range


这是


Excel


特有的资料形态




i =


是把当前单元格的行数,指定


给变量


i



j =


是把当前单元格的栏数,指定给变量


j



Set k = Target


是把当前的


单元格,


指定给变量


k




用像


i



j


这样简单的变量,


在程序的前面你可能还记得


i



j


代表着




厶。程序写长了,你可能忘记


i



j


代表着什厶。所以最好的方法是用比较有



意义的代号,来为变量


命名如


iRow



iCol


来取代


i



j



VBALesson 8


程序说明∶体会一下


Workshe et_Change()


事件。



Private


Sub


Worksheet_Change(ByVal


Target


As


Range)


Dim


iRow,


iCol


As


Integer


iRow


=



iCol = If iRow >= 2 And iCol = 2 And Target


False


Cells(iRow,


iCol


+


1)


=


Cells(iRow,


iCol)


*


2


Events


=


True


ElseIf


iRow


>=


2 And iCol = 2 And Target =


End


If


End Sub


前几个教程都是用


Worksheet_SelectionChange


事件来举例子,大家应该能体会他




怎厶一回事了吧。



这个教程就是要让你来体会什厶是


Worksheet_Chang()


事件。


因为这二个事件在


VBA



是非常有用的,


所以一定要了解。

< p>


简单的说,


前者是你鼠标移动到那个单元格,< /p>


就触发那个事件的执行。


後者是要等到



你点选的单元格,



有了改变才会触发 事件的执行。


二者执行的时机一前一後。


Target



是代表限定当前的单元格要是有数


的,才会 执行以下三行的程序。


Cells(iRow, iCol + 1) =


Cells(iRow, iCol) * 2


,是你在


B


栏输入数


时,


C


栏将可得到


B


栏二倍的数



Target = < /p>



限定当前的单元格要是没有数


的,才会 执行以下一行的程序。


Cells(iRow,


iCol


+


1)


=



,是把


C



的数


清成空格。


Events


=


False



Events


=


True


,这是


< br>个


成双的程序,当你用了前者记得在执行其他程序後要写上後面的程序。它的目的 在



抑制事件连锁执行。


简单的说就是,在


B


字段所触发的事件,不愿在其它单元格再



触发另一个


Worksheet_Change()


事件。



VBALesson


9











Worksheet_Change()


事< /p>










Private


Sub


Worksheet_Change(ByVal


Target


As


Range)


Dim


iRow


As


Integer


iRow


=



Events


=


False


Cells(iRow,


3)


=


Cells(iRow,


3)


+


Cells(iRow,


2)


Events = True End Sub Private Sub Worksheet_Change(ByVal Target As Range)


Dim


iRow


As


Integer


iRow


=



'Events


=


False


Cells(iRow,


3)


=


Cells(iRow, 3) + Cells(iRow, 2) 'Events = True End Sub


这个程序的目的是要



B2


输入新的数


时,


C2


会将


B2


输入的新数


加上


C2




有的数


呈现在


C2


上。



照上面有加上



Events = False


程序执行当然没问题。



现在你在


Events =


False



Events


= True


前加上



'



看看。



程序前加上



'


的目的是要使



'

< p>


之后的文字变成说明文字,


程序执行时是会跳< /p>



过说明文字,


不执行说明文字的内容。



程序前加上



'



符号后,文字会变成绿色。



执行第二个程序时,你将发现


C2


不会按你所要求的,呈现结果。



这就是所


谓的事件连锁反应。



请问这个宏该如何写


!


我想运行一个 宏


,


就能在当前工作表


B3

< p>
上填上一条公式


;



条公 式的结果是所有工作



表上的


B4


单元格的和


.


请问这个宏该如何写


.


谢谢


! Sub gg() Dim sh As


Worksheet, shname$$ For Each sh In Worksheets shname = (


(


中怎样创建 一


个名为“table”的新工作表



通过


VBA


编程,很容易添加新的工作表,但是新表的名字不知 怎样控制,对


6



于新创建



的工作表,


由于其名字并非特定,


所以就不好使用所创建的新表了。

不知各位有何高



见。






=


请教:如何用


VBA


检索表


1



A


列与表


2



3


4



5.....



A


列相同的行并把后者整行拷


< br>贝到表


1


检索到的行中


,


谢谢!!!!


To


yxptwq∶用这程序试看看。


Sub


Copy1()


Dim Row_dn1, Row_dnN, i, j, n As Integer Row_dn1 = (


n = 1 For Each wSheet In eets With wSheet If .Name


= .Range(


(i, 1) Then .Rows(j &


Row_dn1 + n) n = n + 1 End If Next j Next i End If End With Next wSheet End Sub


如果要用


VBA


程 式输入密码使用下列程式码


Sub EnterNewPW() '


程式说明


:


利用


SendKe y


输入


VBAProject


密码


'


注意


事项


:< /p>


执行本程式需要在


Excel


视窗


,


不能在


VBE


视窗


ys



True


'Alt


+


F11





VBA





ys



True


'ALT


+


T




(







(T))


ys


工具


(T)-VBprojec t


属性


(E) ys


'TAB



(


切换到


PAg e2


保护页面


) ys


选取


Checkbox


方块


(

锁定专案以


供检




) '({+}


选取


, {-}


取消选取


) ys



(


跳到第一次输


入密码


Textbox myPW =


假设密码


chijanzen ys myPW, True '


输入





ys



True


'TAB



(













Textbox


ys myPW, True '


输入密码


ys


按确定钮


(



设值


) ys < /p>


返回


Excel


视窗

End Sub


冒泡排序法:


冒泡排序法之


所以成为“冒泡排序”是因为值较小的或是较轻的元素浮到作为继续排



序的一组数的顶部。


Sub


Macro1() Dim i As Integer Dim j As Integer Dim t as integer Static number(1 To 10) As Integer


For i = 1 To 10 number(i) = inputbox“输入要排序的数:” Next i For i = 10To 2 Step


-1 For j


= 1 To i




1 ‘下面进行位置交换


If number(j) > number(j + 1) Then t = number(j + 1) number(j


+ 1) = number(j) number(j) = t End If Next j Next i For i = 1 To 20 Print number(i) Next i


End sub


首先定义一个数组:通过循环录入


10


个整数,然后用一个二重循环测试前一个数是否



大于后


一个数。


如果大于则交换两个数的下标,


即交换两个数在数组中的位置,


交换



通过一个变量来进行。




先用传统的方法解决这个问题,经过比较,选用了较为简单的和高效的排序方法

< br>


——“快速排序”,具


体算法可参考数据结构等有关书 籍。对所有数据排序后再合



并相同数据,合并程序较为简便, 我开始时


采用了这种方法,但后来发现对于这些



的数据,先合并后排序速度更快,因为有大量相同的数据。合并


是采用“标记 ”算



法,具体如下:


(设数据已存放 在


sData()


数组中


< p>
,结果存到


Queryp()


数组,


Amount


是数据个数)


'


把相同元素置


0 For i = 1 To Amount If sData(i) 0 Then For j = i



1 To Amount


If


sData(i)


=


sData(j)


Then


sData(j)


=


0


Next


j


End


If


Next


i


'


删除相同元素


Queryp(1)


=


sData(1)


k = 1 For i = 2 To Amount If Not (sData(i) = 0) Then k = k



1 Queryp(k) = sData(i) End If Next


i kMax = k ReDim Preserve Queryp(kMax)


虽然这样使得运算速度有所高,但是仍然要进行大量的循环


运算,占据了程序大部



分的运算时间。于是我一直在寻觅一种更为高效的算法。



功夫不负有心人,在仔


细分析数据的特征,比较了多种方案之后,我 终于找到了一



种相当成功的算法,原来要

3



4


秒的运算

< br>缩短到仅需


0.1



0.2


秒。



我遇到的数据具有以下特征:①相同 数据很多,②最大、最小数之间相差不



3



③都是带两位小数的正数。



针对数据的特征,我采用了以下算法:



针对数据的特征,我采用了以


下算法:



步骤:


1




用一个循环找出整数和小数部分的最大、最小值。小数部分的最大、最小值乘

< p>



100


转为整数。< /p>


2




定义一 个二维数组,下标范围分别是整数和小数部分的最小值到最大值。


3




再用


一 个循环把所有源数据填入刚才定义的二维数组,填写规则是,源数据的



整数和小数部分分别对应二维


数组的两个下标。例如,“13.51

< p>
4




最后顺向或逆向 读取二维数组中的非零数


据即可得到从小到大或从大到小排列



的数据,而且不会含有重复数据。




VB


编写的程序如下:


'


**


**密集型数据处理****


Dim i As Long, j As Long, k As Long, kMax As Long Dim Queryp() As


Single ReDim Queryp(Amount) Dim IntegerPart As Integer, DecimalPart As Integer Dim IPmax As


7


-


-


-


-


-


-


-


-



本文更新与2021-02-22 17:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/669444.html

Excel VBA命令大全的相关文章