




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
几种用VBA在单元格输入数据的方法 这是试写的VBA的课程 VBALesson1,希望各位给予意见,以便以后改进。程序说明:几种用VBA在单元格输入数据的方法:Public Sub Writes()1- 2 方法,最简单在 中输入单元格名称。1 A1 = 100 在 A1 单元格输入100。2 A2:A4 = 10 在 A2:A4 单元格输入10。3- 4 方法,采用 Range( ), 中输入单元格名称。3 Range(B1) = 200 在 B1 单元格输入200。4 Range(C1:C3) = 300 在 C1:C3 单元格输入300。5- 6 方法,采用 Cells(Row,Column),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 按钮,則则所点选的单元格均会被输入文字 Test。Public Sub Selection1()Selection.Value = Test 在任何你点选的单元格输入文字 Test。End Sub观看本程序的方法:粗体文字为程序,其它字体均为说明文字。按快捷键 Alt+F11即可看到程序。读取别表数据 几种如何把别的工作表 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(B1) = Sheet4.Range(B1) 把 Shee4工作表单元格 B1 数据,读到 B1 单元格。4 Range(C1:C3) = Sheet4.Range(C1) 把 Shee4 工作表单元格 C1 数据,读到 C1:C3 单元格。5- 6 方法,在被读取的工作表 Cells(Row,Column),Cells 前加上被读取工作表名称 Sheet4。5 Cells(1, 4) = Sheet4.Cells(1, 4) 把 Shee4 工作表单元格 D1 数据,读到 D1 单元格。6 Range(Cells(1, 5), Cells(5, 5) = Sheet4.Cells(1, 5) 把 Shee4 工作表单元格 E1 数据,读到 E1:E 5单元格。End Sub你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工作表单元格 F1 数据。Public Sub Selection1()Selection.Value = Sheet4.F1 把 Shee4 工作表单元格 F1 数据,读到任何你点选的单元格。End Sub读取别表数据 几种如何把别的工作表 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(B1) = Sheet4.Range(B1) 把 Shee4工作表单元格 B1 数据,读到 B1 单元格。4 Range(C1:C3) = Sheet4.Range(C1) 把 Shee4 工作表单元格 C1 数据,读到 C1:C3 单元格。5- 6 方法,在被读取的工作表 Cells(Row,Column),Cells 前加上被读取工作表名称 Sheet4。5 Cells(1, 4) = Sheet4.Cells(1, 4) 把 Shee4 工作表单元格 D1 数据,读到 D1 单元格。6 Range(Cells(1, 5), Cells(5, 5) = Sheet4.Cells(1, 5) 把 Shee4 工作表单元格 E1 数据,读到 E1:E 5单元格。End Sub你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工作表单元格 F1 数据。Public Sub Selection1()Selection.Value = Sheet4.F1 把 Shee4 工作表单元格 F1 数据,读到任何你点选的单元格。End Sub利用 Worksheet_SelectionChange 在限定的单元格输入数据 如何利用 Worksheet_SelectionChange 在限定的单元格输入数据的方法。Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Row = 2 And Target.Column = 2 ThenTarget = 100End IfEnd SubIf . Then . End If 这是我们学的这一个逻辑判断语句。Target.Row = 2,指的是鼠标选定的单元格的行大于或等于 2。Target.Column = 2 ,指的是鼠标选定的单元格的栏等于 2。If Target.Row = 2 And Target.Column = 2 Then 指的是只有在Target.Row = 2及Target.Column = 2二个条件成立时。就是 (Target.Row = 2) 为True及(Target.Column = 2)为True时,才执行下面的程序 Target=100,也就是 B 栏第二行及以下行用鼠标被点选时,才会被输入100,其它单元格则不被输入数据。比较Worksheet_SelectionChange()与CommandButton1_Click() 比较 Worksheet_SelectionChange() 与用按钮 CommandButton1_Click() 来执行程序二者的方法与写法有何不同。Worksheet_SelectionChange()事件Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Row = 2 And Target.Column = 2 ThenTarget = 100End IfEnd Sub按鈕 CommandButton1_Click()Private Sub CommandButton1_Click()If ActiveCell.Row = 2 And ActiveCell.Column = 3 ThenActiveCell = 100End IfEnd Sub二者执行方法最大的地方,在于 Worksheet_SelectionChange() 是自动的,你不用了解他是怎么完成工作的。按钮 CommandButton1_Click() 是人工的,比 SelectionChange()多一道手续,就是要去按那接钮,程序才会执行。SelectionChange() 有一个参数 Target 可用;CommandButton1_Click ()没有。所以我们要用 ActiveCell 内定函数来取代Target,ActiveCell 与 Target最大的不同点他只能指定一个单元格。就是你选取多个单元格也只有最上面的单元格会加上数据;用 Selection 取代 ActiveCell, 用法就跟 Target 一样了。 完整的 If.Then End 逻辑判断式 完整的 If.Then End 逻辑判断式。Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Row = 2 And Target.Column = 2 ThenTarget = 200ElseIf Target.Row = 2 And Target.Column = 3 ThenTarget = 300ElseIf Target.Row = 2 And Target.Column = 2 ThenTarget = 400ElseTarget = 500End IfEnd Sub这是个完整的 If 逻辑判断式,意思是说,假如 If 後的判断式条件成立的话,就执行第二条程序,否则假如 ElseIf 後的判断式条件成立的话,就执行第四条程序,否则假如另一个 ElseIf 後的判断式条件成立的话,就执行第六条程序。Else 的意思是说,假如以上条件都不成立的话,就执行第八条程序。他的执行方式是假如 IF 的条件成立的话,就不执行其它ElseIf 及Else 的逻辑判断式,假如 If 後的条件不成立的话才会执行 ElseIf 或 Else 逻辑判断式。第二个 ElseIf後的条件因为与 IF 後的条件一样,所以这个判断式後面的 Target=400 将是永远无法执行到的程序。 为什麽要用变数 我们为什麽要用变数。Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim i , j As IntegerDim k As Rangei = Target.Rowj = Target.ColumnSet k = TargetIf i = 2 And j = 2 Thenk = 200ElseIf i = 2 And j = 3 Thenk = 300ElseIf i = 2 And j = 4 Thenk = 400Elsek = 500End IfEnd Sub跟VBALesson 6比较,程序是不是明朗多了,在前课重复的用 Target.Row,Target.Column及Target来写程序是不是有一点烦。用变量的第一个好处大家马上感觉得出来,就是可以简化程序。使用变量前,你得先宣告变量。宣告变量的方法是在 Dim 后面写上变量 i As 后面接上变量的形态 Integer。Dim i , j As Integer 就是宣告 i 与 j 为整数变量,这是同时宣告二个变量 i 与 j 所以要在二个变量间加个 , 号。Dim k As Range 是宣告 k 为范围资料形态,Range这是 Excel 特有的资料形态。i = Target.Row是把当前单元格的行数,指定给变量 i。j = Target.Column 是把当前单元格的栏数,指定给变量 j。Set k = Target 是把当前的单元格,指定给变量 k。用像 i 与 j 这样简单的变量,在程序的前面你可能还记得 i 或 j 代表着什厶。程序写长了,你可能忘记 i 或 j 代表着什厶。所以最好的方法是用比较有意义的代号,来为变量命名如 iRow 或 iCol 来取代 i 及 j 。 Worksheet_Change()事件 体会一下Worksheet_Change()事件。Private Sub Worksheet_Change(ByVal Target As Range)Dim iRow, iCol As IntegeriRow = Target.RowiCol = Target.ColumnIf iRow = 2 And iCol = 2 And Target ThenApplication.EnableEvents = FalseCells(iRow, iCol + 1) = Cells(iRow, iCol) * 2Application.EnableEvents = TrueElseIf iRow = 2 And iCol = 2 And Target = ThenCells(iRow, iCol + 1) = ElseCells(iRow, iCol + 1) = End IfEnd Sub前几个教程都是用Worksheet_SelectionChange 事件来举例子,大家应该能体会他是怎厶一回事了吧。这个教程就是要让你来体会什厶是Worksheet_Chang()事件。因为这二个事件在VBA都是非常有用的,所以一定要了解。简单的说,前者是你鼠标移动到那个单元格,就触发那个事件的执行。後者是要等到你点选的单元格,数有了改变才会触发事件的执行。二者执行的时机一前一後。Target 是代表限定当前的单元格要是有数的,才会执行以下三行的程序。Cells(iRow, iCol + 1) = Cells(iRow, iCol) * 2,是你在 B 栏输入数时,C 栏将可得到 B 栏二倍的数。Target = 是限定当前的单元格要是没有数的,才会执行以下一行的程序。Cells(iRow, iCol + 1) = ,是把 C 栏的数清成空格。Application.EnableEvents = False与Application.EnableEvents = True,这是个成双的程序,当你用了前者记得在执行其他程序後要写上後面的程序。它的目的在抑制事件连锁执行。简单的说就是,在 B 字段所触发的事件,不愿在其它单元格再触发另一个Worksheet_Change()事件。 Worksheet_Change()事件连锁反应 体会一下Worksheet_Change()事件连锁反应。Private Sub Worksheet_Change(ByVal Target As Range)Dim iRow As IntegeriRow = Target.RowApplication.EnableEvents = FalseCells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)Application.EnableEvents = TrueEnd SubPrivate Sub Worksheet_Change(ByVal Target As Range)Dim iRow As IntegeriRow = Target.RowApplication.EnableEvents = FalseCells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)Application.EnableEvents = TrueEnd Sub这个程序的目的是要在 B2 输入新的数时,C2 会将 B2 输入的新数加上 C2 原有的数呈现在 C2 上。照上面有加上 Application.EnableEvents = False 程序执行当然没问题。现在你在 Application.EnableEvents = False 与 Application.EnableEvents = True 前加上 看看。程序前加上 的目的是要使 之后的文字变成说明文字,程序执行时是会跳过说明文字,不执行说明文字的内容。程序前加上 符号后,文字会变成绿色。执行第二个程序时,你将发现 C2 不会按你所要求的,呈现结果。这就是所谓的事件连锁反应。 Worksheet_Activate()事件 体会一下Worksheet_Activate()事件。这个程序的目的是要大家体会一下 Worksheet_Activate() 事件的意义与用法,大家暂且不用去了解事件的程序代码。我们在 出毛登记表工作表 K栏打勾选取我们要的数 。当打开 发毛单 工作表时, 出毛登记表 工作表 K栏有打勾的那一行数 自动就复制至 发毛单 工作表。这样的做法可省去我们做一个按钮,用人工的方法将数 复制至 发毛单 工作表。但有个後遗症,那就是每次打开 发毛单 工作表时Excel一定会执行这个程序,增加Excel 的工作量。 Worksheet_Activate()事件 体会一下Worksheet_Activate()事件。这个程序的目的是要大家体会一下 Worksheet_Activate() 事件的意义与用法,大家暂且不用去了解事件的程序代码。我们在 出毛登记表工作表 K栏打勾选取我们要的数 。当打开 发毛单 工作表时, 出毛登记表 工作表 K栏有打勾的那一行数 自动就复制至 发毛单 工作表。这样的做法可省去我们做一个按钮,用人工的方法将数 复制至 发毛单 工作表。但有个後遗症,那就是每次打开 发毛单 工作表时Excel一定会执行这个程序,增加Excel 的工作量。 Worksheet_BeforeRightClick () 事件 体会一下 Worksheet_BeforeRightClick () 事件。Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)If Not Application.Intersect(Target, Range(D8) Is Nothing ThenCancel = TrueMsgBox (Target is Range D8 and Cancel is True !)ElseCancel = FalseEnd IfEnd Sub这个程序的目的是要大家体会一下Worksheet_BeforeRightClick () 事件的意义与用法。Worksheet_BeforeRightClick () 事件也有二个参数,Target 以前介绍过了,另一个参数 Cancel 是做什厶用途的呢?这个 Ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络服务架构的发展与维护试题及答案
- 风险管理框架对企业战略实施效果的分析试题及答案
- 2025年软考网络管理员知识储备试题及答案
- 考前综合复习网络管理员试题及答案
- 高效记忆考试题及答案
- 河北地理试题及答案
- 法学概论考试复习中的思考与探索试题及答案
- 风险识别与管理工具综合考核试题及答案
- 时事政治必刷题及答案(权威)
- 软件工程理论考察试题及答案
- GB/T 23268.1-2009运动保护装备要求第1部分:登山动力绳
- GB/T 12469-1990焊接质量保证钢熔化焊接头的要求和缺陷分级
- 临床血液学检验技术-其他白细胞疾病
- DBJ-T 13-195-2022 烧结煤矸石实心砖和多孔砖(砌块) 应用技术标准
- FZ/T 21009-2015短毛条
- 《华为工作法》读书分享课件
- 禾川x3系列伺服说明书
- 电缆井工程及电缆钢管敷设施工方案
- 各种面试方法详解
- 窄线宽光纤激光器研究俞本立
- 人教版六年级下册数学第五、六单元测试题及答案
评论
0/150
提交评论