我的程序一直运行得好好的, 但因为工程有点大,所以一直在往里添FORM,已达近百个FORM了,现在发现这个MSHFlexGrid控件乱来了,比如:
     For n = 1 To MSHFlexGrid1.Rows
        For m = 1 To MSHFlexGrid1.Cols
          newsheet.Cells.Item(n, m) = Trim(MSHFlexGrid1.TextMatrix(n - 1, m - 1))
        Next
      Next
newsheet是EXCEL文件表对象,上面的语句主要是把现有的MSHFlexGrid1内容导到EXCEL表中.
象这样的语句它会提示:"下标越限"的错误!
经过显示发现,原本只有15列的MSHFlexGrid1.Cols值有35!
不知道是什么原因,要如何解决,目前发现的都是增大,并且出错,不知道会不会减少的,因为我现在的解决方法是用
on error resume next
语句.
几乎所有的MSHFlexGrid1.Cols都有问题!
我的百来个form中有一半以上的form有MSHFlexGrid控件.
对这方面有经验的朋友给点建议.
谢谢!

解决方案 »

  1.   

    我估计完成它至少还得有40-50个form
      

  2.   

    当然是用数据库了,但同时我要用EXCEL啊,EXCEL如此强大的功能我为何不用?
    请注意:
    第一,我的程序在之前都是好用的;
    第二,我的程序没有用到什么域和全局变量等方面的东东;
    哈哈,您说的这些用不着你教我,请您回答我的问题.
      

  3.   

    1楼及8楼处已经做了答复.建议好好看下MSDN中"Visual Basic 窗体的存活期" ,代码中某些细节处理不当会引起麻烦的.
    "Visual Basic 窗体的存活期"
      

  4.   

    mshflexgrid不如用vsflexgrid 性能高,功能强,没那么多bug
      

  5.   

    插句嘴:动辄几百个form的ERP真恐怖 还用VB写
    楼主的ERP没有考虑模块重用,一个一般的ERP哪会有这么多窗体.很多功能都是一个窗体样式来的.把窗体做成模板调用啊,一些控件,位置都用参数定置就是了.
    EPR主要不就是基础资料,单据,报表这些,单据只有单表,双表,三表那么几种,报表也是上面一些查询条件,下面一个表单的东西.其他的一些基本属性设置直接用个表单,顶多搭配些treeview或文本框,复选框之类的可以完成,反正就那几个样式,何必每个功能加一个form,再说窗体样式太多,而且一致性不够的话,用户使用起来会很麻烦,培训和使用成本会很高
      

  6.   

    发生错误时的n,m和rows,cols值是多少?实际的rows和cols是多少.试试在属性窗口中修改mshflexgrid的cols和rows属性,设置大一点看看
      

  7.   

    楼主应该先在发生错误的地方设置断点,然后在IDE中运行到这个地方的时候查看M,NCOLS,ROWS的实际值是多少.而不是想当然的认为它"应该"是多少.很多代码的错误都是调试不够仔细造成的. 另:当工程达到上百个FORM的时候应该考虑拆分了:将工程属于不同部分的差异较大的功能归类,再拆分到不同的几个小工程内.通过一个编译一个.无论是从调试角度还是维护角度还是程序效率角度来看都是值得这么做的. WINDOWS这么大你数数有多少个EXE? 要是整个windows才一个EXE你晕不晕呀?
      

  8.   


    那东西价格贵啊,你看这里的报价好像比VB6专业版还贵吧:http://www.softwarelist.cn/?fsid=56&id=2990
    市场价格:   3,499.90 RMB (以销售人员正式报价为准)