|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
按照书192-194页内容自己做了3个程序。但是结合起来后却运行不起来
我的编程思路
1、按单元格批量新建工作表
2、给每个工作表拷贝表头
3、批量对数据分类拷贝
三个程序单独运行都好用,但是一结合起来就不行了,每一步都写了我的设计思路。请大师们指点一下。
然后如果有更好的思路麻烦展示给我学习一下
- Sub 按单元格批量新增工作表并分类导入数据()
- Dim a&, b&, sht As Worksheet, c&, i&, d As String, rng As Range, x As String
- a = c = InputBox("请输入第一条记录所在行号")
- b = InputBox("请输入第一条记录所在列号")
- i = a - 1 '确定标题行下限
- Application.DisplayAlerts = False '关闭屏幕更新
- Application.ScreenUpdating = False '关闭提示
- Set sht = ActiveSheet
- On Error Resume Next '当没有对应工作表时忽略下一行代码引起的运行时错误
- Do While sht.Cells(a, b).Value <> ""
- If Worksheets(CStr(sht.Cells(a, b).Value)) Is Nothing Then '判断是否存在对应工作表
- Worksheets.Add after:=Worksheets(Worksheets.Count) '在所有工作表后插入新工作表
- ActiveSheet.Name = sht.Cells(a, b).Value '更改表标签名字
- Set rng = Worksheets(CStr(sht.Cells(a, b).Value)).Rows("1:i") '复制表头到新工作表
- Worksheets(1).Rows("1:i").Copy rng
- End If
- a = a + 1
- Loop
- Sheets(1).Activate '回到第一个工作表
- x = CStr(sht.Cells(c, b).Value) 'x=表名,a之前用过了,现在用c
- Do While x <> ""
- Set rng = Worksheets(x).Range("A65536").End(xlUp).Offset(1, 0) '找到最后一个非空单元格
- Rows(c).Copy rng '整行拷贝
- c = c + 1
- x = CStr(sht.Cells(c, b).Value) '从新定义表名
- Loop
- Application.DisplayAlerts = True '打开屏幕更新
- Application.ScreenUpdating = True '打开消息提醒
- End Sub
复制代码 运行结果如下不但没拷贝反而多出了几个新表。。(行号2 列号1)
新建 Microsoft Excel 97-2003 工作表 (3).rar
(6.92 KB, 下载次数: 131)
|
|