ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4166|回复: 20

[求助] 求助大神for循环i=1 to n,当n=1,怎么办?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-4 21:50 | 显示全部楼层 |阅读模式
求大神帮忙,如果工作表标签的名字为2时,其后面的明细表为2.1、2.2 、2.3。。。。,但sheetname为2时,后面只有1张表,代码就出错,求大神帮解决一下小弟的问题,还有本人的代新学码确实拿不出手,希望大神能帮忙优化,谢谢大神
Sub 编号()
Dim arr, rng As Range, i&, str As String, j&, m, n, x, k As Integer
  n = ActiveSheet.Range("a65536").End(xlUp).Row
  For x = 5 To n
  arr = ActiveSheet.Range(ActiveSheet.Cells(5, "b"), ActiveSheet.Cells(n, "b"))
  Next x
For i = 1 To n - 4
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "1." & Format(i, "0") & "、" & arr(i, 1)
If ActiveSheet.Name = "汇总" Then
Worksheets(ActiveSheet.Index + i).Name = Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & Format(i, "0") & "、" & arr(i, 1)
  ElseIf ActiveSheet.Name = "2" Then
Worksheets(ActiveSheet.Index + i).Name = "2." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "2." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "3" Then
Worksheets(ActiveSheet.Index + i).Name = "3." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "3." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "4" Then
Worksheets(ActiveSheet.Index + i).Name = "4." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "4." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "5" Then
Worksheets(ActiveSheet.Index + i).Name = "5." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "5." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "6" Then
Worksheets(ActiveSheet.Index + i).Name = "6." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "6." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "7" Then
Worksheets(ActiveSheet.Index + i).Name = "7." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "7." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "8" Then
Worksheets(ActiveSheet.Index + i).Name = "8." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "8." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "9" Then
Worksheets(ActiveSheet.Index + i).Name = "9." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "9." & Format(i, "0") & "、" & arr(i, 1)
ElseIf ActiveSheet.Name = "10" Then
Worksheets(ActiveSheet.Index + i).Name = "10." & Format(i, "0")
Worksheets(ActiveSheet.Index + i).[A2] = "名称:" & "10." & Format(i, "0") & "、" & arr(i, 1)
Else
Worksheets(ActiveSheet.Index + i).Name = "1." & Format(i, "0")
End If
  Next i
  k = 4
For j = ActiveSheet.Index + 1 To ActiveSheet.Index + n - 4
k = k + 1
    str = "含税总计"
    Set rng = Worksheets(j).Cells.Find(str, lookat:=xlWhole)

    Worksheets(ActiveSheet.Index).Range("G" & k).Formula = "=" & Worksheets(j).Name & "!" & Range(rng.Address).Offset(0, 5).Address(0, 0)
    Worksheets(ActiveSheet.Index).Range("L" & k).Formula = "=" & Worksheets(j).Name & "!" & Range(rng.Address).Offset(0, 10).Address(0, 0)
    Range("n5") = "=ROUND((G5-L5),0)"
    Range(ActiveSheet.Cells(5, "n"), ActiveSheet.Cells(n, "n")).FillDown
    Next j
    End Sub


装修改造工程.zip

157.5 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2020-3-5 01:06 | 显示全部楼层
用语句判断工作表数量:
If Sheets.Count<2 Then Exit Sub

TA的精华主题

TA的得分主题

发表于 2020-3-5 04:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主的代码建议用With语句简化一下

TA的精华主题

TA的得分主题

发表于 2020-3-5 09:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
n=1 那就只循环一次

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-5 09:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
renkangjizhen 发表于 2020-3-5 09:11
n=1 那就只循环一次

能帮我看看怎么改吗?跪谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-5 09:19 | 显示全部楼层
shenjianrong163 发表于 2020-3-5 01:06
用语句判断工作表数量:
If Sheets.Count

能帮我看看怎么改吗?附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-5 10:26 | 显示全部楼层
sj15627581616 发表于 2020-3-5 04:19
楼主的代码建议用With语句简化一下

大神,帮我看看好吗?小弟纯菜鸟,代码都是照猫画虎,真心不会啊

TA的精华主题

TA的得分主题

发表于 2020-3-5 12:01 | 显示全部楼层
晴朗的 发表于 2020-3-5 10:26
大神,帮我看看好吗?小弟纯菜鸟,代码都是照猫画虎,真心不会啊

楼主  你数字怎样来的  1.1 ----1.??

  2.1-- 2.??  

TA的精华主题

TA的得分主题

发表于 2020-3-5 12:08 | 显示全部楼层
晴朗的 发表于 2020-3-5 10:26
大神,帮我看看好吗?小弟纯菜鸟,代码都是照猫画虎,真心不会啊

大概看了下楼主的表,楼主大概是依照新建工作表命名吧,根据模板B列创建对应的工作表,然后再根据下级工作表对应内容依次创建更下级的工作表?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-5 12:18 | 显示全部楼层
sj15627581616 发表于 2020-3-5 12:08
大概看了下楼主的表,楼主大概是依照新建工作表命名吧,根据模板B列创建对应的工作表,然后再根据下级工 ...

是的,大神帮我看看吧。标签名字为1的表 属于汇总表,其下级为1.1、1.2、1.3.。。。标签名字为2的汇总表,其下级为2.1 、2.2 、2.3.。。
现在有个问题就是 ,当2表的下级 只有1个表情况,运行出错。如果 2个及以上就可以运行。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 09:59 , Processed in 0.051045 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表