设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

统计报表审核模块如何编写

[复制链接]
跳转到指定楼层
1#
发表于 2005-1-28 00:20:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有两个表:一个为农业统计表(Sheet3)、一个为审查公式表(Sheet7),现在编制一宏(如下)从(Sheet7)中逐条读取公式对(Sheet3)进行平衡关系检查,但运行出错,好象是变量类型不匹配,请版主或高手不吝赐教,小的多了。

Sub Macro1()

' Macro1 Macro

' 宏由 Lenovo User 录制,时间: 2005-1-27

Dim shgs, cwxx As Variant   ' 定义“审核公式”、“错误信息”两个变量

shgs = ""

cwxx = ""

For i = 1 To 5

   shgs = Sheet7.Cells(i, 1)

   If Not shgs Then     '就这一句出错

   cwxx = cwxx + Sheet7.Cells(i, 2) + Chr(10)

   End If

Next

MsgBox cwxx

End Sub





[此贴子已经被作者于2005-1-27 16:20:32编辑过]

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
7#
发表于 2005-1-28 05:31:00 | 只看该作者
我是福建人。你的程序当然是可以优化的,比如考虑使用SELECT CASE结构,去除临时表和临时单元格等。当然,数据量不大时效果不会明显,这种问题你可以在以后不断改进。
6#
 楼主| 发表于 2005-1-28 04:15:00 | 只看该作者
我已把那段程序改成如下这样了,运行已经没问题,你看看是否可以优化一下,或改其它思路,更简洁,运行更快.

Sub test()

' bbsh Macro

' 宏由 余瑞龙 录制,时间: 2005-1-27

'

'

Dim temp1

Dim shgs, cwxx As Variant

Dim rng As Range

shgs = ""

cwxx = ""

temp1 = Range("q3")

For i = 2 To 7

   shgs = Sheet7.Cells(i, 1)

   shgs = Replace(shgs, "[", "")

   shgs = Replace(shgs, "]", "")

   Range("q3").Formula = "=if(" & shgs & ",true)"

   If Range("q3") <> True Then

   cwxx = cwxx + Sheet7.Cells(i, 2) + Chr(10)

   End If

Next

Range("q3") = temp1

MsgBox cwxx

End Sub

5#
 楼主| 发表于 2005-1-28 03:59:00 | 只看该作者
哦,我明白了.谢谢你的指点!

不过这种写法在 VFP 中是可行的.只不过字符型变量要用宏替换函数替换出来才行.

老鬼:你真行,我很佩服你!

我是初学编程,还没入门,VBA程序有许多句子我还看不懂.望有机会得到您的指教.

    我是安徽歙县人,现在歙县农调队工作,主要是处理统计报表数据,常接触 Excel

所以想学编程,减轻负担提高效率.

    你是何地人,能交流一下吗?我的联系是话: 05596512702 余瑞龙





[此贴子已经被作者于2005-1-27 20:08:23编辑过]

4#
发表于 2005-1-28 03:50:00 | 只看该作者
not运算符是用以对某值进行逻辑否定的,能够进行逻辑否定的,当然只有逻辑值。如果你的变量不是“true”或“false”这样的逻辑值,就会出现类型不匹配的错误。而[D22]=[D14]+[D15]-[D16]和[D5]>[D6]返回的都是逻辑值,所以不会出错。
3#
 楼主| 发表于 2005-1-28 02:57:00 | 只看该作者
如果这一句直接写上公式是可以运行的,即:If Not [D22]=[D14]+[D15]-[D16] Then    或  If Not [D5]>[D6] Then    但用变量进行替代就不行,不知什么原因?
2#
发表于 2005-1-28 01:36:00 | 只看该作者
我想你的意思是不是这样:If shgs<>"" Then
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 23:34 , Processed in 0.093984 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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