设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2425|回复: 4
打印 上一主题 下一主题

[VBA编程/宏] 求教如何处理错误溢出

[复制链接]
跳转到指定楼层
1#
发表于 2016-12-15 10:31:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求教大神查看,给出解决方案

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-12-15 10:40:14 | 只看该作者
这个写法好像有点问题。end的后面。。。。我忙完再看看。
3#
 楼主| 发表于 2016-12-15 10:47:32 | 只看该作者
roych 发表于 2016-12-15 10:40
这个写法好像有点问题。end的后面。。。。我忙完再看看。

多谢大神,我也属于小白,有错麻烦等大神有空,帮我更改一下
4#
发表于 2016-12-15 13:17:30 | 只看该作者
附件没有VBA
Range使用最好指定SHEET
如此sheet1.range()
end用法如下:
.End(xlUp)
实在不行,可以用录制宏的方法查看如何写代码
5#
 楼主| 发表于 2016-12-15 13:39:05 | 只看该作者
忘了加上vba,抱歉!
Sub NewSht()
    Dim Dic As Object
    Dim Arr, Ary, k%, i%, icol%

    Set Dic = CreateObject("Scripting.Dictionary")
    Arr = Range("A1", [A2000].End(3)(1, 22))
    For k = 9 To UBound(Arr)
        Dic(Arr(k, 9)) = ""
    Next

    For Each Key In Dic.keys
        If Key <> "" Then
            ReDim Ary(0 To UBound(Arr), 1 To 22)
            i = -1
            For k = 1 To UBound(Arr)
                If Arr(k, 9) = Key Or k = 1 Then
                    i = i + 1
                    For icol = 1 To 22
                        Ary(i, icol) = Arr(k, icol)
                    Next
                End If
            Next


            Workbooks.Add
            With ActiveWorkbook
                .ActiveSheet.[A1].Resize(i + 1, 22) = Ary
                .ActiveSheet.[A1].Resize(i + 1, 22).Borders.LineStyle = 1
                .SaveAs ThisWorkbook.Path & "\" & Split(Key, " ")(0) & ".xlsx"
                .Close
            End With
        End If
    Next
    Dic.RemoveAll
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 18:12 , Processed in 0.103733 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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