excelvba从入门到精通 vba 如何让代码执行多次

如何让下列EXCEL的VBA代码,只在指定三个表格运行_百度知道
如何让下列EXCEL的VBA代码,只在指定三个表格运行
列代码.Offset(0.Row)
If Ra;TTP&#92,只在表格名“提货单”, 1) &c2;Program Files\),麻烦将需要修改的代码贴出来,“销售单”:c&quot.mp3&quot:\D.End(xlUp); & Range(&C65536&TTPlayer,谢谢Dim Ra As Range
For Each Ra In Range(&quot:\ Ra Then
Shell &quot,“记录单”三个表格中运行.exe C
提问者采纳
& Range(& Or shi = &);记录单&), 1) &gt.SelectCall abcSheets(&TTPlayer.End(xlUp).SelectCall abcSheets(&D:c&quot:&#92.Offset(0;);销售单&
NextEnd SubSub 调用()Sheets(&quot。第一段Sub abc()Dim Ra As Range
For Each Ra In Range(& & Range(&);记录单&quot:&#92.exe C; Ra Then
Shell &Program Files&#92.mp3&quot.Row)
If Ra;提货单&TTP\TTP\C65536&quot,第一段是在三个指定表中依次执行这个代码;提货单&quot.Offset(0,才选择是否执行;销售单&quot.SelectCall abcEnd Sub第二段Sub abc()shi = ActiveSheet, 1) &gt.End(xlUp););Program Files\ ThenDim Ra As Range
For Each Ra In Range(&C65536&yinpin:\TTPc2:c&quot,看下面两段代码.NameIf shi = &quot.Row)
If Ra:\c2;D;第二段是只判断当前表格名字是否为指定的表格; Or shi = & Ra Then
Shell &quot.exe C.mp3&quot不太明确你的意思
我试一下能不能用,再有问题再问你
提问者评价
谢谢你,你最先回答
其他类似问题
按默认排序
其他2条回答
&&nbsp.exe&Ra.Row)&&Shell&As&Then&&&Files\TTP\TTP&)for&Beep&&&&&&For&Rworksheets(arr(r)):c&&&;Each&&&&&Ra&&nbsp,&Range(&提货单&C65536&r=lbound(arr)&nbsp.mp3&C;&For&In&&);&to&&&&&&ubound(arr)&&nbsp,&&&Ra&NextnextEnd&&&nbsp.select&nbsp:\&&nbsp.Offset(0;&&If&nbspDim&&&&If&&&&&nbsp,&&nbsp,r%arr=array(&&&销售单&&&&c2;&Exit&&quot:\Program&&&1)&记录单&&nbsp,&&&D.End(xlUp);;&Range(&End&&Ra&nbsp
用工作簿的change事件
能用我上面代码修改后贴出来吗?谢谢
excel的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Excel中不重复的人的姓名的VBA代码
学习一下求出Excel中不重复的人的姓名的VBA代码。
当然,还是使用VBA中的字典来处理。假设有3张工作表,每张表格的A列都是姓名列,所有这些姓名中有些是重复的,要求编写一段代码,在另一个工作表上显示不重复的姓名。
使用VBA的话,代码如下:
Dim i&, Myr&, Arr
Dim d, k, t, Sht As Worksheet
Set d = CreateObject(&Scripting.Dictionary&)
For Each Sht In Sheets
If Sht.Name && &Sheet4& Then
Myr = Sht.[a65536].End(xlUp).Row
Arr = Sht.Range(&a2:a& & Myr)
For i = 1 To UBound(Arr)
d(Arr(i, 1)) = &&
k = d.keys
Sheet4.[a3].Resize(d.Count, 1) = Application.Transpose(k)
Set d = Nothing
部分代码解释:
1、For Each Sht In Sheets :For Each&Next循环结构,这种形式是VBA特有的,用于对对象的循环非常适用。意思是在所有的工作表中依次循环。
2、If Sht.Name && &Sheet4& Then :如果这个工作表的名字不等于&Sheet4&时执行下面的代码。
3、Myr = Sht.[a65536].End(xlUp).Row :求得这个工作表A列有数据的最后一行的行数,把它赋给变量Myr。这里用了长整型数据类型(Long),数据范围最大可到2,147,483,647,是为了避免数据很多的时候会超出整型数据类型(Integer)而出错,因为整型数据类型数据范围最大只到32,767。
4、Arr = Sht.Range(&a2:a& & Myr) :把A列数据赋给数组Arr。
5、For i = 1 To UBound(Arr) :For&Next循环结构,从1开始到数组的最大上限值之间循环。Ubound是VBA函数,返回数组的指定维数的最大值。
6、d(Arr(i, 1)) = && :这句代码的意思就是把关键字Arr(i,1)加入字典,关键字对应的项为空,相当于字典中的这个关键字没有解释。和d.Add Arr(i,1), &&的效果相同,只是代码更简洁一些。
7、k=d.keys :把字典d中存在的所有的关键字赋给变量k。得到的是一个一维数组,下限为0,上限为d.Count-1。Keys是字典的方法,前面已经讲过了。
8、Sheet4.[a3] .Resize(d.Count, 1) = Application.Transpose(k) :把字典d中所有的关键字赋给表4以a3单元格开始的单元格区域中。
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------查看: 1128|回复: 6
如何跳出现有的if,执行下一个循环
阅读权限20
在线时间 小时
本帖最后由 pjl0102 于
22:38 编辑
Sub 按片区汇总工作簿取所有数据2()
If [A2] = && Then MsgBox &请选择统计所属月份!&, 64, &提示&
If [A2] && && Then
Application.ScreenUpdating = False
Dim FileName As String, wb As Workbook, sht As Worksheet, Erow As Long, _
fn As String, arr As Variant, c, b
FileName = Dir(ThisWorkbook.Path & &\*.xls&)
Do While FileName && &&
If FileName && ThisWorkbook.Name Then '判断文件是否为本工作簿
fn = ThisWorkbook.Path & &\& & FileName
Set wb = GetObject(fn)
Set sht = wb.Worksheets(1)
With sht.Columns(56)
Set c = .Find([A2], LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set b = c
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address && firstAddress
End If
End With
arr = sht.Range(&b& & c.Row, &bd& & b.Row)
Erow = ThisWorkbook.Sheets(&分户统计表&).Range(&B65536&).End(xlUp).Offset(1, 0).Row '取得汇总表中第一条空行行号
Cells(Erow, &B&).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
wb.Close False
End If
FileName = Dir
Loop
Application.ScreenUpdating = True
End If
MsgBox &统计完成!&, 64
End Sub复制代码如上诉代码13-22段中If Not c Is Nothing Then执行都是顺利的
但是如果出现c is nothing 就会出错
请问如何设置让c is nothing时 执行下面的循环
还有我的代码都是各种拼凑 能帮我看看如何简化吗?
阅读权限90
在线时间 小时
On Error Resume Next
On Error GoTo 0
阅读权限20
在线时间 小时
& & & & & & & &
yjh_27 发表于
On Error Resume Next
具体加在哪里能告诉我吗?
阅读权限95
在线时间 小时
pjl0102 发表于
具体加在哪里能告诉我吗?
楼上的代码是错误处理语句,不会让你在IF处跳出For循环。要在IF处跳出For循环,可以用 goto& & 语句,也可以在IF 语句处 给For 变量赋值,让变量值超出For 的范围。
阅读权限20
在线时间 小时
maditate 发表于
楼上的代码是错误处理语句,不会让你在IF处跳出For循环。要在IF处跳出For循环,可以用 goto& & 语句,也可 ...
非常感谢你的回答!
goto 是跳转到什么地方的写法吗? 我不太懂啦 是不是还要在某个地方做个标记?如何写标记我也不会
我自己用了个比较笨的办法解决了&&下面继续加一条if&&not c is nothing 才执行下面的
阅读权限95
在线时间 小时
GoTo 语句示例
本示例使用 GoTo 语句在一个过程内的不同程序段间作流程控制,不同程序段用不同的“程序标签”来区隔。
Sub GotoStatementDemo()
Dim Number, MyString
& & Number = 1& &&&' 设置变量初始值。
& & ' 判断 Number 的值以决定要完成那一个程序区段(以“程序标签”来表式)。
& & If Number = 1 Then GoTo Line1 Else GoTo Line2
& & MyString = &Number equals 1&
& & GoTo LastLine& & ' 完成最后一行。
& & ' 下列的语句根本不会被完成。
& & MyString = &Number equals 2&
& & Debug.Print MyString& & ' 将“&Number equals 1&”显示在“立即”窗口。
阅读权限20
在线时间 小时
& & & & & & & &
本帖最后由 pjl0102 于
22:40 编辑
maditate 发表于
GoTo 语句示例
本示例使用 GoTo 语句在一个过程内的不同程序段间作流程控制,不同程序段用不同的“程序标签 ...
我去试试&&
我直接在if not c is&&nothing then
& && && && && &XXXXXXX
后加& && & else
& && && && &&&goto line1
& && && & end if
wb.Close False
玩命加载中,请稍候
玩命加载中,请稍候
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!
本站特聘法律顾问:徐怀玉律师 李志群律师
Powered by下载:20次
格式:doc&&&
贡献者:Qtjcmq
上传时间: 21:22
此文档归属以下专题
暂无相关专题
暂无相关文档
-------------
新增文件夹...
(多个标签用逗号分隔)
&Excel.VBA从入门到精通
分享到:&&
下载本文档需要登录,并付出相应积分。()
文件大小:6.09MB
所需积分:& 100
&2006-, All rights reserved.

我要回帖

更多关于 excelvba从入门到精通 的文章

 

随机推荐