| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5373 人关注过本帖
标题:请问vb6.0 MSFlexGrid控件哪个属性可以将指定的单元格区域值快速赋值给数组 ...
只看楼主 加入收藏
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
结帖率:96.67%
收藏
已结贴  问题点数:20 回复次数:9 
请问vb6.0 MSFlexGrid控件哪个属性可以将指定的单元格区域值快速赋值给数组:
例如:定义数组:arr() 后怎样将第二列的第5行到第二列的第50000行这个区间的单元格的数据快速赋值给数组arr,然后可执行这个数组的上下限,就像excel一样:arr= Range("b5:b5000") ,然后可以使用 For j = 1 To UBound(arr)

下面的的方法感觉很慢:

Private Sub Command1_Click()
ReDim arr(5 To 50000)   '定义数组的上标与下标
For I = 5 To 50000
arr(I) = MSFlexGrid1.TextMatrix(I, 2)    '第二列的第5行到第5000行赋值到数组arr中
Next I
End Sub
谢谢!

[此贴子已经被作者于2016-6-4 17:52编辑过]

搜索更多相关主题的帖子: excel 
2016-06-03 21:51
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:5 
MSFlexGrid.rows
 MSFlexGrid.cols
 就是MSFlexGrid最大行和列数,一样可以用做for的控制,为什么一定要数组呢。
2016-06-04 13:50
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 2楼 wds1
我想先把数据放到数组,然后再来处理数组,这样运行速度会快一些,在数据处理上因用惯了vba的一套总想找到那种感觉

[此贴子已经被作者于2016-6-4 17:06编辑过]

2016-06-04 17:04
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:2 
ReDim arr(5 To 50000)   '定义数组的上标与下标
For I = 5 To 50000
arr(I) = MSFlexGrid1(I, 2)    '第二列的第5行到第5000行赋值到数组arr中
修改为:
arr(I) = MSFlexGrid1.TextMatrix(I, 2)
Next I

定义arr数组应该是字符型数据,你这样处理应该是可以的,前提是MSFlexGrid1的第二列的第5行到第5000行必须有值。

请不要选我!!!
2016-06-04 17:25
chen3523
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:33
帖 子:223
专家分:1165
注 册:2013-2-12
收藏
得分:5 
我用过DataGrid传到Excel,估计修改下可以达到你的目的。
Set Newxls = CreateObject("excel.application")         '创建Excel应用程序并打开之
     Newxls.Workbooks.Open (App.Path & "\Coinage.xls")   '打开EXCEL工作簿
      Newxls.Worksheets(1).Select '选择工作表
      Newxls.Rows("1:5000").Clear        '清除表格内容

With DataGrid
 Dim Num列数%
  For i = 1 To .ApproxCount    ' .ApproxCount近似行数,网格以此来校准垂直滚动条
     .Bookmark = i
        For j = 0 To .Columns.Count - 1
          If j = 0 Then Num列数 = .Columns.Count - 1
           Newxls.Cells(1, j + 1).Value = .Columns(j).Caption      '第一行显示表提  .Value设置或返回当前行的一列中的基本数据值
           Newxls.Cells(i + 1, j + 1).Value = .Columns(j).Text
        Next j
  Next i
End With

调试失败3次后,关机睡觉,当醒来时多有收获。
2016-06-04 17:36
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 4楼 ZHRXJR
同等数据条件下,我感到运行速度比excel慢很多
2016-06-04 17:50
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:5 
不清楚你为何要这么做,5000行数据在窗口里面如何看?
如果是用数据库了,直接用SQL语句查询就可以。
2016-06-04 18:44
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 7楼 xiangyue0510
我主要是想将excel的数据(600万行)放在MSFlexGrid1(实际是VSFlexGrid表格)表格来处理,看看这个速度是否比在excel中快,现在感到比在excel中慢,找找原因看是不是数组赋值的问题,否则只能学习用数据库了,谢谢版主。。。。。。

[此贴子已经被作者于2016-6-4 19:56编辑过]

2016-06-04 19:55
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:3 
回复 8楼 vbcaonia
没有这样试过,但是有可能,因为excel可能是直接将一个区域的指针赋值给数组指针就可以。而grid中需要循环
2016-06-05 16:31
yachtz
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-12-3
收藏
得分:0 
回复 9楼 xiangyue0510
vsflexgrid单列赋值给数组
dim arr
arr = Split(grid.Cell(flexcpText, 0, 1, grid.Rows - 1, 1), vbCr)
2017-07-26 15:22
快速回复:请问vb6.0 MSFlexGrid控件哪个属性可以将指定的单元格区域值快速赋值 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050442 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved