ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 应用程序定义或对象定义错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-21 08:24 | 显示全部楼层
3楼中我解释了name的由来,你在看看,它不适用于“单击此处进入”这个单元格,你要自己写一个。elseif就行了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-21 11:09 | 显示全部楼层
MOY838840554 发表于 2019-1-21 08:23
代码没写啊。
if rng.value like "进入*"  ,要“进入”开头的,“单机此处进入”是“*进入”,这个你要 ...

大侠:
      我的表基本编完了,可运行“明细表-总经理”中的表单控件“生成计划付款明细数据”时,提示内存溢出。
      请大侠给看看,那里出错了.万分感谢!!!

新版资金计划测试模板9.rar

408.95 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2019-1-21 12:28 来自手机 | 显示全部楼层
你不会调试代码么?报错时点调试,报错那行会变成黄色。鼠标放在变量或者关键字上可以看到值。视图-本地窗口打开。本地窗口能看到所有定义变量的值。
检查你会发现,coun和max_row在特殊情况获取错误的值。
coun,用countif判断N列大于0的数量,最后有个-1。因为你表格第三行N3是合计,要减去这个。特殊情况来了,你有些表格是空的,所以N3=0,就不该-1。应该改成N3>0是-1,N3=0时不减。
空白同样会造成max_row得到错误值,空表是C列的max_row=3,Aarr=A5:N3,这是表头啊,max_row要大于5才行。所以循环里,加上条件max_row>=5

TA的精华主题

TA的得分主题

发表于 2019-1-21 12:42 来自手机 | 显示全部楼层
VBA有个特殊的判断函数,iif函数,用法和工作if函数一毛一样。
coun=coun …-1

改成
coun=coun …-iif(sh.range("N3")>0,1,0)

这样就可以做到N3大于0减1,=0时不减

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-21 15:19 | 显示全部楼层
本帖最后由 ALEX7710 于 2019-1-21 17:14 编辑
MOY838840554 发表于 2019-1-21 12:42
VBA有个特殊的判断函数,iif函数,用法和工作if函数一毛一样。
coun=coun …-1

大侠:
      我是VBA初学者,有些代码还不熟悉。能不能麻烦你,给改改代码。我好对比学习,叩谢!
      问题:“明细表-总经理”中的表单控件“生成计划付款明细数据”时,提示类型不匹配。请问大侠这是什么意思?那里出问题了?

新版资金计划测试模板10.rar

486.77 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2019-1-21 15:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 汇总生成金泽伟业拟付款明细表5()
    Dim max_row, coun, i, j, sum&, name$
    Dim Aarr, Barr
    Dim sh As Worksheet
    '##########循环全部工作表,合计N列>0的数量
    For Each sh In Worksheets
        '判断该表A1单元格后5位是不是“资金计划表“
        If Right(sh.Range("A1"), 5) = "资金计划表" Then
            '累加N列>0的数量,-1为不统计第4行合计
            coun = coun + Application.WorksheetFunction.CountIf(sh.Range("N:N"), ">0") - IIf(sh.Range("N4") > 0, 1, 0) '根据N4合计值看是否要-1
        End If
    Next
    '##########创建结果数组Barr
    ReDim Barr(1 To coun + 1, 1 To 6) '+1合计行
    '##########循环全部工作表
    For Each sh In Worksheets
        With sh
       max_row = .Cells(Rows.Count, "C").End(3).Row 'C列有数据的行数
            '判断该表A1单元格后5位是不是“资金计划表“
            If Right(sh.Range("A1"), 5) = "资金计划表" And max_row >= 5 Then '增加判断行数大于等于5

                name = .Range("B2").Value '部门名称=B2单元格
                '##########N列>0写入数组Barr
                Aarr = .Range("A5:N" & max_row)
                For i = 1 To UBound(Aarr)
                    If Aarr(i, 14) > 0 Then '数组第14列(即原表N列)>0
                        j = j + 1
                        Barr(j, 1) = j '序号
                        Barr(j, 2) = name '部门名称
                        Barr(j, 3) = Aarr(i, 2) '合同名称
                        Barr(j, 4) = Aarr(i, 3) '施工单位
                        Barr(j, 5) = Aarr(i, 14) '财务部审核付款金额
                        sum = sum + Barr(j, 5) '合计累加
                    End If
                Next i
            End If
        End With
    Next
    '##########清除之前数据和格式
    max_row = Sheet4.Cells(Rows.Count, 1).End(3).Row
    If max_row > 3 Then
        With Sheet4.Range("A4:F" & max_row)
            .Value = "" '清除之前生成的数据
            .UnMerge '清除合并单元格(合计)
            .Interior.Pattern = xlNone '清除填充颜色
        End With
    End If
    '##########返回数据,设置格式
    max_row = j + 4
    Barr(coun + 1, 1) = "合计" '数组最后一行第1列
    Barr(coun + 1, 5) = sum '数组最后一行第5列,合计值sum
    With Sheet4.Range("A4:E" & coun + 4)
    .Value = Barr '返回生成的数据
    Sheet4.Range("A" & max_row & ":F" & max_row).Interior.Color = RGB(191, 191, 191) '最后一行填充灰色
    Sheet4.Range("A" & max_row & ":D" & max_row).Merge '最后一行A:D列合并单元格
    End With
    MsgBox "生成完毕!", , "提示"
    'Stop
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-21 21:29 | 显示全部楼层
本帖最后由 ALEX7710 于 2019-1-21 21:36 编辑
MOY838840554 发表于 2019-1-21 15:35
Sub 汇总生成金泽伟业拟付款明细表5()
    Dim max_row, coun, i, j, sum&, name$
    Dim Aarr, Barr

大侠就是大侠,非常感谢。学无止境,什么时候才能写出你这样的代码啊!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-13 01:33 , Processed in 0.034695 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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