【VBA编程中关于工作表自动循环执行的问题】

【VBA编程中关于工作表自动循环执行的问题】,第1张

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恢复工资条

添加按钮 :右键属性可以控制大小、位置都固定,还可修改名称。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12183117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存