ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 做股票模板遇到溢出的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-1-31 15:56 | 显示全部楼层 |阅读模式

股票计算.rar (137.58 KB, 下载次数: 151)
程序目的: 根据选取的做多、做空的股票,画出给定时间段的多空双方股票加权价格、pe等
出现的问题:
sheet1中添加多方(或空方)的股票后点击“计算”
出现提示:运行时错误‘6’溢出
出现错误的语句是  mul1 = mul1 + Sheet3.Cells(n + 1, m + 1) * Sheet1.Cells(fr + m, 5) / Sheet3.Cells(2, m + 1)  (如果是空方股票,出现在mul2中)
调试错误时 发现停在最新添加的股票上
另外要说明的是
1)这个问题出现后,只重新点击“计算”,就没有问题了,可以运行出结果
2)运行过的股票,不关闭excel文件,清空后重新添加这个股票,也不会出问题

点击“计算”执行的程序如下(更详细的可见附件,下面程序中/后的注释是这里加的,原程序中没有):
Private Sub CommandButton5_Click()
   
   Dim fr As Integer
   Dim r As Integer      /这两个计算多方的股票个数用
   Dim kfr As Integer
   Dim kr As Integer   /这两个计算空方的股票个数用
   Dim startdate As Date
   Dim enddate As Date   /给定的时间段
   Dim mul1 As Double   /多方加权价格
   Dim mul2 As Double  /空方加权价格
   
   
   
   fr = Sheet1.Range("A1").End(xlDown).row
   r = Sheet1.Range("A10000").End(xlUp).row
   kfr = Sheet1.Range("G1").End(xlDown).row
   kr = Sheet1.Range("G10000").End(xlUp).row
   startdate = Sheet1.TextBox1.Value
   enddate = Sheet1.TextBox2.Value   
   
    '读取价格数据并按权重加权
   Sheet3.Cells().Clear
   For k = 1 To r - fr
       Sheet3.Cells(1, k + 1) = Sheet1.Cells(fr + k, 2)          / 把多方的股票代码列到第一行
   Next k
   For j = 1 To kr - kfr
       Sheet3.Cells(1, r - fr + 1 + j) = Sheet1.Cells(kfr + j, 8)    /第一行中紧接着多方的股票代码列空方的股票代码
   Next j
   Sheet3.Cells(1, r - fr + kr - kfr + 2).Value = "多方加权价格"
   Sheet3.Cells(1, r - fr + kr - kfr + 3).Value = "空方加权价格"  
   Sheet3.Cells(1, 1) = "=HX_AutoDate(1,""" & startdate & """,""" & enddate & """,-1,-1,0,0,0,0,0)"    /这个是同花顺的函数,在A1单元格中输入函数,此列下面单元格中自动列出交易日
   For m = 1 To r - fr + kr - kfr
       For n = 1 To Sheet3.Range("A10000").End(xlUp).row - 1
       Sheet3.Cells(n + 1, m + 1).Formula = "=hx_s_dq_close(R[-" & n & "]C,RC[-" & m & "],2)"   /同花顺函数,根据交易日和股票代码读取收盘价
       Next n
   Next m
   
   For n = 1 To Sheet3.Range("A10000").End(xlUp).row - 1 '多方加权价格计算
       If r - fr = 1 Then            /如果多方只有一个股票,加权价格即为原来的价格
          Sheet3.Cells(n + 1, r - fr + kr - kfr + 2).Value = Sheet3.Cells(n + 1, 2).Value
       Else
       For m = 1 To r - fr        /多方股票个数大于1,计算加权价格,比例为sheet1中输入的自定义比例,即Sheet1.Cells(fr + m, 5)中的数,后面除以Sheet3.Cells(2, m + 1)是对价格序列的标准化,即首日加权价格为1
           mul1 = mul1 + Sheet3.Cells(n + 1, m + 1) * Sheet1.Cells(fr + m, 5) / Sheet3.Cells(2, m + 1)
       Next m
       Sheet3.Cells(n + 1, r - fr + kr - kfr + 2).Value = mul1
       mul1 = 0
       End If
   Next n
。。。。。
望高手不吝赐教~~非常感谢~~


TA的精华主题

TA的得分主题

发表于 2012-3-20 20:20 | 显示全部楼层
本帖最后由 cumulonimbus 于 2012-3-20 20:22 编辑

厉害,就不知道你的选股方法哈
不好意思,你的是2007的,我的2003的打不开哈

TA的精华主题

TA的得分主题

发表于 2012-8-7 09:41 | 显示全部楼层
同花顺的函数是怎么引用的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 13:39 , Processed in 0.035837 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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