Dim x%, y As Worksheet, z%
z = WorksheetsCount
For x = 1 To z
Set y = Worksheets(x)
If yName = "某某" Then
Else
'然后对工作的 *** 作
End If
Next x
-------------------------------
你代码中的y是变体变量,根据赋值,为工作表。工作表与工作表相等的描述是错误的,只有工作表的名称是否相同的判断。所以,你那里会出错。
顺便一提,你所使用的判断跳转语句: goto line。意思是如果判断为假,则重新运行循环,这样的循环会造成无限循环。这一句是多余的。你不需要用跳转,只需要忽略即可。
还有就是,建议最好申明变量时能明确定义变量的数据类型,这样可以加快程序的运行。只不过,你这里因为数据量不大,可能没有这个必要。建议要养成一个好的习惯。
Sub 把第一列是1的同行5列的值赋值给3列()
’y变量多余的,我去掉了
Dim x As Integer
For x = 100 To 7 Step -1
If Cells(x, 1)Value = 1 Then Cells(x, 5) = Cells(x, 3)Value
Next x
End Sub
都没看明白你想干什么?
你不要说你打算实现的思路,你只说思路不说目的,当你的思路是错的时候,别人根本就不明白你想把怎么样的原表变成什么样的目的表。你只说目的就好,思路让答题者来说。
不要这么说:你比如这里的,看标题“按条件多次循环”?这个说法很笼统,看不明白什么意思。再看具体的,每循环1152次就复制一次?这句也不明白你讲的什么,循环那么多次是干什么用的?VBA的每一次循环都可以做很多事情的了。会不会是你想每隔1152行复制一次?再看你的代码,看半天也没看明白比如你这For循环的前11句都是赋值语句,给测试表的A2:K2填写数据表中的内容,但是你是填写了104800次,每一次的内容还不一样,拿学校里的黑板来说,你拿粉笔写了10万多次,写了又擦掉,擦了又写上,最后黑板上只留最后一次写的,前面10万多次做的都是无意义的擦掉和写上的动作,你累不累?
你要这么说:你的数据表是一个什么样的格式的表,你想复制那些数据表的内容到测试表的那些区域上。这只要这么一说,别人才能明白你想干什么,才能帮你设计VBA代码。
Public Sub 拆分()
'只写出关键的拆分“开票数量”部分 和 复制“开票号”部分,其余的自己补补
Dim c1 As Range, c2 As Range, c3 As Range, c4 As Range, n, res, tmp
n = 10 '发货数量,最大值
Set c1 = Range("D2") '原数据,开票号,开始位置
Set c2 = Range("E2") '原数据,开票数量,开始位置
Set c3 = Range("G2") '拆分后,开票号,开始位置
Set c4 = Range("H2") '拆分后,开票数量,开始位置
'----复制表头
c3Offset(-1) = c1Offset(-1)
c4Offset(-1) = c2Offset(-1)
'----清理表格
Range(c3, Cells(65536, c3Column))ClearContents
Range(c4, Cells(65536, c4Column))ClearContents
'----开始拆分
res = 0 '记录拆分后的余数
Do While c2 <> "" '循环每个 开票数量 ,直到空值
tmp = c2Value
Do While tmp > 0
' If MsgBox(tmp & Chr(10) & res, vbOKCancel) <> vbOK Then Exit Sub
If tmp > n - res Then
c4 = n - res '记录这次的发货量
tmp = tmp - (n - res)
res = 0
Else
c4 = tmp '记录这次的发货量
If tmp < n - res Then
res = tmp + res
Else
res = tmp
End If
tmp = 0
End If
c3 = c1 '复制开票号
Set c4 = c4Offset(1)
Set c3 = c3Offset(1)
Loop
Set c2 = c2Offset(1)
Set c1 = c1Offset(1)
Loop
End Sub
详细Hi我
公共子分裂()
'只写分割键“发票金额”一节,并复制“计费号码”的一部分,其余的他补补
点心C1范围为范围,C2,C3为范围的C4范围,N,水库,TMP
= 10'发货数量,最大
设置C1 =范围(“D2”)的原始数据,计费号码,起始位置
设置C2 =范围(“E2”)的“原始数据,计费号码,开始位置
设置C3 =范围(”G2“)”分离,计费号码,起始位置
设置C4 =范围(“H2”)的分割,计费号码,起始位置
'----复制的表头
c3Offset(-1)= c1Offset(-1 )
c4Offset(-1)= c2Offset(-1)
'----超净工作台
范围(C3,细胞(65536,c3Column))。 ClearContents
的范围(C4,细胞(65536,c4Column))。 ClearContents
'----开始分裂
水库= 0'记录分割后剩余
而C2 >“”'遍历每个计费量,直到一个空值
> TMP = c2Value
DO WHILE TMP> 0
'如果MSGBOX(TMP&CHR(10)水库,常数vbOKCancel)> vbOK然后退出小组
如果TMP> N - RES然后
C4 = N - 高分辨率的纪录这样的出货量
TMP = TMP - (N - 水库)
水库= 0
其他
C4 = TMP'创纪录的出货量这个
如果TMP <N - 水库
资源= TMP + RES
其他
水库= TMP
结束如果
TMP = 0
>如果
C3 = C1'复制计费号码
设置C4 = c4Offset(1)
设置C3 = c3Offset(1)循环
设置结束C2 = c2Offset(1)
设置C1 = c1Offset(1)
循环
结束小组
您好我详细
本文是《王佩丰VBA》课程的总结版。第一课是for循环。
宏 是针对 固定位置 的一组动作集合,vba是用vb书写宏的一种方式,另一种方法为 宏录制 。
加载开发工具的步骤:文件→选项→自定义功能区→开发工具→录制宏→录完后执行宏
录制 的方法是最简单的创建宏的方式,对一张表录制的宏 *** 作,可以随即运用到其他表上, 其他表的内容位置必须完全一样 。
录制宏→删除CDE→按住shift,移动J列→删选数据→停止录制
改颜色
对当前单元格,填充紫色
绝对引用 选中H1,填充单元格颜色为紫色
相对引用 向下3格,填充紫色
for循环针对 重复步骤 ,起过程控制作用。重点在于找到 重复的步骤 。此例即用到 相对引用 ,向下7行填充紫色,循环下一次重复进行。
1生成工资条
过程:选中第1行复制,到第3行,插入复制单元格。选中第3行复制,到第5行,插入复制单元格。循环往复。
重复过程:选中复制、向下2行、插入复制单元格。
2恢复工资条
添加按钮 :右键属性可以控制大小、位置都固定,还可修改名称。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)