| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3879 人关注过本帖
标题:求vb将VSFlexgrid或MSFlexGrid表格中b列各单元格中的数据坼分到每一个单元格 ...
取消只看楼主 加入收藏
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
结帖率:96.67%
收藏
已结贴  问题点数:20 回复次数:8 
求vb将VSFlexgrid或MSFlexGrid表格中b列各单元格中的数据坼分到每一个单元格中的vb程序
1、单元格b5开始的b列各单元格中填有不同数字, 每二个数字间空一格,

2、b列各单元格从上到下,数据逐个分开,分开后的数字依次填充在同行c5开始的各个单元格(每个单元格一个数据),即b5分开后的数据填充到 c5 行各个单元格,即b6行分开后的数据填充到 c6 行各个单元格...
如:b5的数据坼分到:c5、d5、e5、f5
    b6的数据坼分到:c6、d6、e6、f6
             ......

下面的程序是我用excel做的,就是想在VSFlexgrid或MSFlexGrid表格中实现这个目的:

Sub 按钮2_Click()
Range("c5:k750004").Clear 'Contents
Dim x As Long
arr = Range("b5:b" & Range("b1048576").End(xlUp).Row)
For x = LBound(arr) To UBound(arr)
    brr = Split(Trim(arr(x, 1)), " ")
    ReDim crr(UBound(brr))
    For j = 0 To UBound(brr)
        crr(j) = Val(brr(j))
    Next
Range("e" & x + 4).Resize(1, UBound(crr) + 1) = crr
Next
End Sub

1.rar (37.36 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-5-19 09:45编辑过]

搜索更多相关主题的帖子: excel 
2016-05-18 22:43
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 2楼 hjxlj
附件就是
2016-05-19 09:29
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 3楼 xiangyue0510
版主你好,就VSFlexGrid而言:主要是第1句输入到数组和最后一句数组输出,麻烦版主修改修改,谢谢!

1、第一句输入这样写不知对不对:arr=VSFlexGrid1.Cell(flexcpText, 5, 2, VSFlexGrid1.Rows - 1, 2);


2、最后一句数组输出:Range("e" & x + 4).Resize(1, UBound(crr) + 1) = crr 中的Range("e" & x + 4)用什么代替或整句修改;

这样好像不对:VSFlexGrid1.Cell(flexcpText, 1, 3).Resize(1, UBound(crr) + 1) = crr

3、For x = LBound(arr) To UBound(arr)这句好像不能用显示类型不匹配?


[此贴子已经被作者于2016-5-19 10:42编辑过]

2016-05-19 09:44
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 6楼 xiangyue0510
版主你好,按照你的说的(当然我没有完全理解)我把整个程序写成这样:
Private Sub Command2_Click()
Dim textmariy, brr(), crr, i As Long, j As Long, k As Long
textmariy = VSFlexGrid1.Cell(flexcpText, 1, 0, 4, 0)
For i = 1 To 4
 brr = Split(VSFlexGrid1.textmariy(i, 0), " ") '第一格是放你原始数的
k = 1
 For j = LBound(brr) To UBound(brr)
  If Trim(brr(j)) <> "" Then
      VSFlexGrid1.textmariy(i, k) = brr(j) '这里注意,如果一行拆分出来的数值个数不同的话,要用最大的。如果不确定,那就要加代码判断并调整列数
      k = k + 1
  End If
 Next j
Next i
End Sub

这句有问题:brr = Split(VSFlexGrid1.textmariy(i, 0), " ")提示对象和属性不支持

麻烦你再看看并修改,或用MSFlexGrid来一段,   谢谢!


[此贴子已经被作者于2016-5-19 19:48编辑过]

2016-05-19 17:10
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 9楼 xiangyue0510
谢谢版主指点!
2016-05-20 11:06
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 11楼 ZHRXJR
老师你好。学习了你的代码,我想问一下:AA = Array("1 2 3 4", "5 9 10 11", "7 8 12 32", "99 10 12 77")能否改成区间赋值即将b列从b5开始到b列有数据的地方为止赋值到数组(像excel:arr = Range("b5:b" & Range("b1048576").End(xlUp).Row)),实际运用中b列的数据有600-900万行,因而不可能逐个输入、输出,我求这个代码的目的就是想把excel的大量数据移到vb来处理(目前没有找到好的表格控件就只好先学MSFlexGrid),因而麻烦老师把这个程序按b列有几百万行数据的要求来写,谢谢!

[此贴子已经被作者于2016-5-20 21:20编辑过]

2016-05-20 21:18
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 11楼 ZHRXJR
老师你好,根据你的代码提示,我已把它写成循环式,成功啦:
Private Sub Command2_Click()
Dim BB, i As Integer, k As Integer, m As Integer
m = 1
For i = 1 To 4
BB = Split(VSFlexGrid1.TextMatrix(i, 0), " ") '使用Split将MSFlexGrid1数据分解到数组BB中
For k = 0 To UBound(BB)
VSFlexGrid1.TextMatrix(m, k + 1) = BB(k) '输出结果
  Next
   m = m + 1
   Next
End Sub


[此贴子已经被作者于2016-5-20 23:25编辑过]

2016-05-20 22:32
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 14楼 ZHRXJR
老师你好,请教一下,在标签1中显示第二列填有数据行的总行数怎样写,谢谢!


另外关于数据库导入数据的问题,麻烦老师有时间看看:

为什么记事本数据txt导入到Access数据库时数据被分解
1、数据库中建有一个表, 表名为:表1,表1中有1个字段,其名为:数据1
2、现将txt文本数据按行导入即数据不分割,每一行txt文本数据在表1占据一个单元格也就是将txt文本数据复制到字段1。

如面数据
2 06 11
09 13 15
02 05 07
08 09 17


3、用下全面的程序导入后,数据被分解了,请老师修改,谢谢!

Private Sub Command9_Click()
Dim g
Dim Con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\vb-数据库学习\db11.mdb;Persist Security Info=False"
Con.Open
 Open App.Path & "\AA.txt" For Input As #1
Do While Not EOF(1)
Input #1, g
Con.Execute ("insert into 表1(数据1) values( " & g & ")")
Loop
Close #1
ErrHandler:
' 用户按了“取消”按钮
Exit Sub

End Sub


图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-5-21 12:03编辑过]

2016-05-21 10:50
vbcaonia
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 16楼 ZHRXJR
老师你好,经测试程序满足要求,谢谢!
2016-05-21 21:00
快速回复:求vb将VSFlexgrid或MSFlexGrid表格中b列各单元格中的数据坼分到每一个 ...
数据加载中...
 
   



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

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