ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: Delphima

【Excel家庭记账-II】v2.4.4版 ★2013.1.28 更新

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-4 12:52 | 显示全部楼层
又2.3.3拉。现在是每过几天我就上来看一下是否有新版发行。哈哈。。。支持

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-4 17:19 | 显示全部楼层
原帖由 gongjiangj 于 2011-3-4 08:19 发表

按照你的这个方法以及下载2.3.3版本,尝试后结果均和以前一样,导入数据的文件选取框的初始地址是"我的文档",而不是本文件的当前文件夹。
这是怎么回事?


"yuzhai2001"谢谢关注,最近的更新是一些比较小的地方,对用户使用体验是改善,没有大的结构上变化~~

GJ,在我电脑上测试过好多次,2.3.3的更新是有效的,莫非Excel在什么地方还会耍诈?你帮忙测试一下这个方法:
导入数据弹出的文件选择对话框指定当前位置需要加上一些补充;
   表对象:EHF_05SysStg
   模块:'一键导入数据
         Private Sub DataInPut_Click()
   位置:在“fName = Application.GetOpenFilename("文本文件 (*.txt),*.txt")”之前加入:
         ChDir ThisWorkbook.Path
         application.defaultfilepath = ThisWorkbook.Path

红字的这句加上看看你的机器上是不是有效了?
=============
我发现主要是EHF2放在不同的存储器盘上,就会出问题,只有一个C盘就没有问题,这个问题我需要再看一下肯定是可以解决的。
=============
问题解决了,就是盘符的问题!
   表对象:EHF_05SysStg
   模块:'一键导入数据
         Private Sub DataInPut_Click()
   位置:在“fName = Application.GetOpenFilename("文本文件 (*.txt),*.txt")”之前加入:
   ChDrive Left(ThisWorkbook.Path, 1)
   ChDir ThisWorkbook.Path
=============
2.3.3 在3月4号更新了,解决了上面的问题!

[ 本帖最后由 Delphima 于 2011-3-4 19:45 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-3-7 14:32 | 显示全部楼层

实在是太棒了,学习学习!膜拜呀!

TA的精华主题

TA的得分主题

发表于 2011-3-7 19:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-9 10:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

收支报表显示不出来

我是有2.2.3版本按照黏贴复制导入2.3.2版本的,目前记录了几笔都可以,只是查看收支报表的时候出现问题,如下:
运行时错误‘1004’:
不能取得类 WorksheetFunction的VLookup属性

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-9 11:04 | 显示全部楼层
原帖由 yufishyy 于 2011-3-9 10:53 发表
我是有2.2.3版本按照黏贴复制导入2.3.2版本的,目前记录了几笔都可以,只是查看收支报表的时候出现问题,如下:
运行时错误‘1004’:
不能取得类 WorksheetFunction的VLookup属性


好奇怪,我看了一下你以前的回复,都是类似的问题,如果你信得过我,可以把你带有数据的2.2.3版本的软件发给我 Delphima@hotmail.com,我帮你导入2.3.3试试。

还有啊,你是在生成哪个报表的时候报错的?另外,我建议检查一下你的Office安装的是不是完整版的?

==========

经过 yufishyy将文件直接发送给我,发现了是因为在记录表中出现错误记录而导致,已发现的情况有两种:
a. 记录表中的账户名称,在账户表中缺少;
b. 只有流水号,没有记录其他内容;

[ 本帖最后由 Delphima 于 2011-3-20 08:05 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-3-14 13:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,在“年度统计表”中的全年一列后面可否再添加一列平均值啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-14 17:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 gongjiangj 于 2011-3-14 13:08 发表
楼主,在“年度统计表”中的全年一列后面可否再添加一列平均值啊?


========================
【2011.3.20插入】:
2.3.4版本在图表中心提供了复选框,供用户自行决定是否在报表中列出月均收支金额。

========================
这个很方便加入,我回头给你看一下,把代码发在这一楼,未来的版本更新会考虑加入这一统计功能。
谢谢GJ!

========================

把这些代码加入到模块 “图表02年度收支表” 的
“Sub PayErn_GenerateData(AppYear As Integer, AppCurr As String, ShowZroBal As Boolean)” 过程 的以下代码的前面:

“End With
Application.ScreenUpdating = True
End Sub”

========================
代码内容:

    '每月平均收支金额的计算
    FstRecR = 4
    LstRecR = .[O1000].End(xlUp).Row
    Dim Min_Date, Max_Date As Date
    Min_Date = Format(WorksheetFunction.Min(EHF_02DtRec.Range("C:C")), "yyyy-m-d")
    Max_Date = Format(WorksheetFunction.Max(EHF_02DtRec.Range("C:C")), "yyyy-m-d")
    '确定统计年度的有效月份数量
    If Year(Min_Date) = Year(Max_Date) Then
        j = Month(Max_Date) - Month(Min_Date) + 1
    Else
        Select Case AppYear
        Case Is = Year(Min_Date)
            j = 13 - Month(Min_Date)
        Case Is = Year(Max_Date)
            j = Month(Max_Date)
        Case Else
            j = 12
        End Select
    End If
    '设置格式
    .Range("O3:O" & LstRecR).Copy
    .Range("P3:P" & LstRecR).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    .[A4].Select
    .Range("P3").Value = "每月平均"
    '填入金额
    For i = FstRecR To LstRecR
        If Not (EHF_04CatgStg.Range("B:B").Find(.Cells(i, 2).Value) Is Nothing) Or _
           Right(.Cells(i, 2).Value, 2) = "小计" Or _
           Right(.Cells(i, 2).Value, 3) = "合计:" Then
            .Cells(i, 16).Value = Round(.Cells(i, 15).Value / j, 2)
        End If
    Next i
========================
以上代码3.15日重新更新了。

[ 本帖最后由 Delphima 于 2011-3-20 08:07 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-3-15 09:58 | 显示全部楼层
Select Case AppYear
    Case Is = Year(Format(WorksheetFunction.Min(EHF_02DtRec.Range("C:C")), "yyyy-m-d"))
        j = 13 - Month(Format(WorksheetFunction.Min(EHF_02DtRec.Range("C:C")), "yyyy-m-d"))
    Case Is = Year(Format(WorksheetFunction.Max(EHF_02DtRec.Range("C:C")), "yyyy-m-d"))
        j = Month(Format(WorksheetFunction.Max(EHF_02DtRec.Range("C:C")), "yyyy-m-d"))
    Case Else
        j = 12
    End Select
以上语句应该是对计算平均值时的除数进行判断的,但是在实际应用中,以我的情况举例记账表中的数据是从2011年开始的,而现在又在2011年当中,所以程序判断均按照“Case Else”执行,即除数是12。
这点应该是与楼主的本意相悖的。

[ 本帖最后由 gongjiangj 于 2011-3-15 11:34 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-15 17:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 gongjiangj 于 2011-3-15 09:58 发表
Select Case AppYear
    Case Is = Year(Format(WorksheetFunction.Min(EHF_02DtRec.Range("C:C")), "yyyy-m-d"))
        j = 13 - Month(Format(WorksheetFunction.Min(EHF_02DtRec.Range("C:C")), "yyyy-m-d") ...


你说的情况,我明白了,用户只有一年的数据,但是还没有记满一年,应该是第一个case 比如你现在一共记了2月,2、3月份,但是j会自动进入第一种情况,最后赋值j=11,这样求出平均来肯定是错的。等我想想,我给重新加一句。

===============

GJ,我已经更新了代码,还是放在原来的那一楼了,就不重新再贴出来了。

[ 本帖最后由 Delphima 于 2011-3-15 18:49 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 10:00 , Processed in 0.038594 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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