Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
123
返回列表 发新帖
楼主: zhongyong6899

[已解决]新手VBA求助

[复制链接]
 楼主| 发表于 2017-4-17 16:35 | 显示全部楼层
运行时错误“9”   下标越界应该如何处理?
回复

使用道具 举报

发表于 2017-4-17 16:56 | 显示全部楼层
zhongyong6899 发表于 2017-4-17 16:35
运行时错误“9”   下标越界应该如何处理?

引用了不存在的数组元素,请上传附件

评分

参与人数 1 +2 收起 理由
zhongyong6899 + 2 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-4-17 22:48 | 显示全部楼层
请教高手:谢谢您前面的指导。
1.程序执行后时间列应该按照升序排列(是整行排,非单独排)。例如:全部工作表中的(019---四班----语文---赵老师----2017年4月19日),执行程序分配后的四班(019---语文---赵老师----2017年5月5日);还有九班的040和041时间都不对?
万分感谢..........................您的耐心指导


2.为什么九班执行程序后时间列升序排序有错误(将2017年5月9日放在了最前面?)

vba求助.rar

33.35 KB, 下载次数: 1

回复

使用道具 举报

发表于 2017-4-18 07:02 | 显示全部楼层    本楼为最佳答案   
zhongyong6899 发表于 2017-4-17 22:48
请教高手:谢谢您前面的指导。
1.程序执行后时间列应该按照升序排列(是整行排,非单独排)。例如:全部工 ...

应该没问题了

vba求助.zip

33.52 KB, 下载次数: 2

评分

参与人数 1 +3 收起 理由
zhongyong6899 + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-4-18 11:16 | 显示全部楼层
Sub test1()
Dim bj As Range, hh As Long, sht As Worksheet, wb As String
For Each sht In Worksheets
        If sht.Name <> "全部" Then
            Worksheets("全部").[a1:e1].Copy sht.[a1]
            sht.[a1].CurrentRegion.Offset(1).Clear
            Worksheets("全部").[a2:e2].Copy sht.[a2]
        End If
        Next
hh = 3
wb = Sheet1.Cells(hh, "B")
Do While wb <> ""
Set bj = Worksheets(wb).Cells(Rows.Count, 1).End(3).Offset(1, 0)
Sheet1.Cells(hh, "A").Resize(1, 5).Copy bj
hh = hh + 1
wb = Sheet1.Cells(hh, "B")
Loop
b = 0
For Each sht In Worksheets

        With sht
            If .Name <> "全部" Then
                .Columns(2).Delete   '删除第2列
                .Columns(2).ColumnWidth = 20      '设置第二列的宽度
                .Range("A:A,C:C,D:D").ColumnWidth = 15     '设置第一列、第三列的宽度
                x = Array("编辑1", "编辑2", "编辑3", "编辑4", "编辑5", "编辑6", "编辑7", "编辑8", "编辑9")  '表头内容自己编辑
                .[a1].Resize(1, 4) = x(b)
                .Range("A1:D1").Font.Size = 11   '第1行设置11号字体
                .Rows(1).RowHeight = 50       '第1行的行高
               
                With .[a1].CurrentRegion.Offset(1)   '设置下面各行
                    .Font.Size = 10   '10号字体
                    .RowHeight = 30       '行高
                    .WrapText = True        '自动换行
                End With
                 b = b + 1
            End If
        End With
    Next
    For Each sht In Worksheets
    If sht.Name <> "全部" Then
    sht.Range(sht.Cells(3, 1), sht.Cells(sht.Cells(Rows.Count, 1).End(3).Row, 4)).Sort key1:=sht.Cells(3, 4), Order1:=xlAscending, Header:=xlNo
    End If
    Next
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-4-18 11:18 | 显示全部楼层
高手327718098  如何修改上面的语句可以冻结上面附件的一班-----------------------九班  九个工作表的前两行。谢谢
回复

使用道具 举报

发表于 2017-4-18 17:25 | 显示全部楼层
zhongyong6899 发表于 2017-4-18 11:18
高手327718098  如何修改上面的语句可以冻结上面附件的一班-----------------------九班  九个工作表的前两 ...

您的冻结是指?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 17:29 , Processed in 0.321689 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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