标题:按条件导入Excel 数据到 listbox ??
取消只看楼主
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
结帖率:66.67%
已结贴  问题点数:20 回复次数:6 
按条件导入Excel 数据到 listbox ??



本人想按条件导入Excel 数据到 listbox中,不知代码怎样写? 求大神帮助!

条件如下(VB操作):
1、GP9列筛选非空项
2、筛选后编号列为升序排序
3、提取Orders列的后3位数导入到VB的listbox
搜索更多相关主题的帖子: 条件 导入 Excel 数据 listbox 
2017-07-25 00:22
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
回复 2楼 xiangyue0510
版主好!

本人在读书时自学了一点VB,现因工作经常要大量处理上述的Excel文件,写了以下代码,只能导入具体的单元格,不知上述的条件要怎么写代码?还请版主指教,感谢!感谢!!


Private Sub Command1_Click()
On Error GoTo err
Dim Xls, Xlsbook, Xlssheet
    Set Xls = CreateObject("Excel.Application")
    Xls.Visible = False '
    CommonDialog1.ShowOpen
    Set Xlsbook = Xls.Workbooks.Open(CommonDialog1.FileName) '打开共公对话框,按“取消”也会导入上次导入的文件,不知是什么原因?也请版主帮忙修改,感谢了
    Set Xlssheet = Xlsbook.Worksheets(1) '
    Xlssheet.Activate '
    List1.AddItem Xlssheet.Cells(4, 2) '只会导入具体的单元格,按条件不知要怎么写代码?还请帮忙
    Xls.Quit
    Set Xlssheet = Nothing
    Set Xlsbook = Nothing
    Set Xls = Nothing
   
err:
Exit Sub
End Sub
2017-07-26 00:01
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
回复 3楼 ZHRXJR
感谢!

提示以下错误,不知是什么原因?


2017-07-26 00:08
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
回复 7楼 xiangyue0510
感谢版主回复!版主讲得太对了,很多东西都还给老师了,知识真的是用时方恨少呀!

但还要以下的第2个条件:“编号列为升序排序”时再导入,现导入的顺序与我想要的不一样,还请版主再指教? 感谢了。

条件如下(VB操作):
1、GP9列筛选非空项
2、筛选后编号列为升序排序
3、提取Orders列的后3位数导入到VB的listbox


现导入的顺序与我想要的不一样,如下图:



PS:
 if Xlssheet.Cells(i, 7)<>"" then List1.AddItem right(Xlssheet.Cells(i, 2) ,3)

[此贴子已经被作者于2017-7-26 23:56编辑过]

2017-07-26 23:54
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
回复 6楼 xiangyue0510
找不到呀?是不是要安装的?就像是office excel 的引用一样。

2017-07-27 00:09
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
以下是引用ZHRXJR在2017-7-27 07:12:32的发言:



添加这二个引用,就可以了。


已引用,出现以下错误提示,不知是否安装的问题 ?。。。。

2017-07-27 21:52
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
得分:0 
以下是引用xiangyue0510在2017-7-27 08:58:55的发言:


还的够干净的,感觉你是一点不留
需要排序的话先把这些编号放在一个动态数组中,然后排序,最后放进list中
动态数组这个给你一段代码,排序这个自己研究一下。
dim nums()
dim k as integer
for i = N1 to N2
    if Xlssheet.Cells(4, 7)<>"" then
     'List1.AddItem right(Xlssheet.Cells(4, 2) ,3)
     redim preserve nums(k)     'preserve 很重要,在改变数组上限的时候不清空原来的数据,要不就相当于重新定义一个数组,都是空的
     nums(k)=right(Xlssheet.Cells(4, 2) ,3)
     k=k+1
    end if
 next i

next


我是菜鸟,这代码看不懂

我是说要按“编号”列升序的顺序来导入数据,就是如下图所示的顺序,但不是在excel 操作,而是要在VB操作。这代码感觉是用导入的数据来排序。。。

2017-07-27 22:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479594-1-1.html




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

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