ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yuanzhuping

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-5-1 21:23 | 显示全部楼层

请教高手

本帖已被收录到知识树中,索引项:开发帮助和教程
我现在有一个东西,它是根据所打开的工作表中的A列4到85的内容,即姓名,后台打开同一目录下的相应姓名对应的工作簿,取值写入当前工作表,为连续多次。但是运行中出错,提示“运行时错误'50290',方法’OPEN作用于对象'workbooks'时失败
过程如下:
Sub uniquedata()
  Dim myApp As New Application, wkSht As Worksheet
  '隐藏Excel
  Dim cel As Range, res
  Set d = CreateObject("scripting.dictionary")
     myApp.Visible = False
  '打开数据文件,并指定工作表对象
  For Each cel In Range("a4:a85")
  If cel <> " " Then
   If Not d.exists(cel.Value) Then d.Add cel.Value, cel.Value
  End If
  Next
  res = d.items
   For i = 0 To d.Count - 1
   
   Set wkSht = myApp.Workbooks.Open(ThisWorkbook.Path & "\b" & res(i) & ".xls").Sheets(2)
  Cells(i + 4, 7) = res(i)
  Cells(i + 4, 2) = wkSht.[b7]
  Cells(i + 4, 3) = wkSht.[b8]
  Cells(i + 4, 4) = wkSht.[e7]
  Cells(i + 4, 5) = wkSht.[h8]
  Cells(i + 4, 6) = wkSht.[d6]
  '关闭Excel
   myApp.Quit
  Next i
  Set wkSht = Nothing
  Set myApp = Nothing
End Sub
Sub Silent_Open2()
    Dim myObj As Object
    ' GetObject 返回工作表对象的引用
     xm = [a2]
    Set myObj = GetObject(ThisWorkbook.Path & "\b" & xm & ".xls")
    [a3] = myObj.Sheets(2).Cells(6, 2)
    '关闭工作簿
    myObj.Close
    Set myObj = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2009-5-1 21:33 | 显示全部楼层
忘记说明一下,当范围即: For Each cel In Range("a4:a4")时,没有提示出错。
我是初级入门者,请版主或哪位大侠帮我修正,鄙人不胜感激

TA的精华主题

TA的得分主题

发表于 2009-5-2 06:23 | 显示全部楼层
非常感谢版主的无私奉献,版主好有耐心毅力,十分敬佩!

TA的精华主题

TA的得分主题

发表于 2009-5-2 09:00 | 显示全部楼层

同感
原帖由 jiuyuedefeng 于 2009-5-2 06:23 发表
非常感谢版主的无私奉献,版主好有耐心毅力,十分敬佩!
同感!
另外请教三个问题:
        1、Listview控件是否可以有标题行一样效果的固定的行号SpreadSheet控件是有的,但SpreadSheet控件不是office自带控件,加装可能涉及版权问题,而且用在自己开发的程序上,有不少功能是多余的。
     2、Listview控件是否有类似ListBox1列表控件的RowSource和数据源捆邦的属性,免得一条一条的插
       3、  版主的例窗体上的ImageList1控件是不是一定要的,起什么作用
谢谢指教!!!

[ 本帖最后由 ayu330602 于 2009-5-2 09:26 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-2 15:02 | 显示全部楼层

第8部分 控件与用户窗体

技巧131         使用Listview控件
131-5        Listview控件的图标设置
       ListView 控件作为一个可以显示图标或者子项的列表控件,可以在控件中显示自定义的图标,它最重要的属性就是View 属性,该属性决定了以哪种视图模式显示控件的项,请参阅技巧131-1。
       在ListView 控件中显示图标,需要在用户窗体中添加一个ImageList控件用于保存图像文件。关于ImageList控件的使用请参阅技巧131-3。
       以大图标模式显示ListView控件的代码如下:
  1. #001  Private Sub UserForm_Initialize()
  2. #002      Dim ITM As ListItem
  3. #003      Dim r As Integer
  4. #004      With ListView1
  5. #005          .View = lvwIcon
  6. #006          .Icons = ImageList1
  7. #007          For r = 2 To 6
  8. #008              Set ITM = .ListItems.Add()
  9. #009              ITM.Text = Cells(r, 1)
  10. #010              ITM.Icon = r - 1
  11. #011          Next
  12. #012      End With
  13. #013      Set ITM = Nothing
  14. #014  End Sub
复制代码
代码解析:
       在用户窗体中以大图标模式显示ListView控件,可使用鼠标拖放图标,并重新排列。
       第5行代码将ListView控件的View属性设置为lvwIcon,大图标视图模式。
       第6行代码使用ListView控件的Icons 属性建立与ImageList控件的关联。
       第7行到第11行代码在ListView控件中添加ListItem对象,其中第10行代码设置使用ListItem对象的Icon属性指定其图像文件在ImageList控件中的编号。
       ListView控件以大图标视图模式显示时如图所示。
Snap2.jpg
       以小图标模式显示ListView控件的代码如下:
  1. #001  Private Sub UserForm_Initialize()
  2. #002      Dim ITM As ListItem
  3. #003      Dim r As Integer
  4. #004      With ListView1
  5. #005          .View = lvwSmallIcon
  6. #006          .SmallIcons = ImageList1
  7. #007          For r = 2 To 6
  8. #008              Set ITM = .ListItems.Add()
  9. #009              ITM.Text = Sheet1.Cells(r, 1)
  10. #010              ITM.SmallIcon = r - 1
  11. #011          Next
  12. #012      End With
  13. #013      Set ITM = Nothing
  14. #014  End Sub
复制代码
代码解析:
       在用户窗体中以小图标模式显示ListView控件,可使用鼠标拖放图标,并重新排列。
       第5行代码将ListView控件的View属性设置为lvwSmallIcon,小图标视图模式。
       与大图标视图模式有所不同的是,当使用小图标视图模式时需要使用ListView控件的SmallIcons属性建立与ImageList控件的关联,使用ListItem对象的SmallIcon属性指定其图像文件在ImageList控件中的编号。
       ListView控件以小图标视图模式显示时如图所示。
Snap3.jpg
       将ListView控件的View属性设置为lvwList,以列表视图模式显示,如图所示。
Snap4.jpg
       将ListView控件的View属性设置为lvwReport,以报表视图模式显示,如图所示。
Snap5.jpg

131-5 Listview控件的图标设置.rar

28.29 KB, 下载次数: 1056

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-2 15:10 | 显示全部楼层
1、Listview控件是否可以有标题行一样效果的固定的行号? SpreadSheet控件是有的,但SpreadSheet控件不是office自带控件,加装可能涉及版权问题,而且用在自己开发的程序上,有不少功能是多余的。
     2、Listview控件是否有类似ListBox1列表控件的RowSource和数据源捆邦的属性,免得一条一条的插?
       3、  版主的例窗体上的ImageList1控件是不是一定要的,起什么作用?
谢谢指教!!!

1、Listview控件没有标题行的效果。
2、Listview控件只能使用Add方法插入ListItem对象。
3、ImageList1控件是用于保存图像文件的。

TA的精华主题

TA的得分主题

发表于 2009-5-3 00:05 | 显示全部楼层
第8部分 控件与用户窗体 在那下载呀?

TA的精华主题

TA的得分主题

发表于 2009-5-3 00:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-5-3 01:07 | 显示全部楼层
不好意思。
    前面版主都讲到了,得认真的学才是.
感谢版主!

[ 本帖最后由 ayu330602 于 2009-5-4 01:16 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-5-3 09:30 | 显示全部楼层
太无私了,非常感谢,预留,一直关注和期待
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 01:48 , Processed in 0.040931 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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