ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1405|回复: 3

请各位大侠帮忙详细解析以下代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-12 21:24 | 显示全部楼层 |阅读模式
Private Sub CommandButton1_Click()
    Dim temp As Range
    Set temp = ActiveWindow.ActiveCell
        temp = ListBox1.List(ListBox1.ListIndex, 0)
        temp.Offset(0, 1) = ListBox1.List(ListBox1.ListIndex, 1)
        temp.Offset(0, 2) = ListBox1.List(ListBox1.ListIndex, 2)
        temp.Offset(0, 3) = ListBox1.List(ListBox1.ListIndex, 3)
    Set temp = Nothing
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim temp As Range
    Set temp = ActiveWindow.ActiveCell
'MsgBox ListBox1.List(ListBox1.ListIndex, 0)
'MsgBox ListBox1.List(ListBox1.ListIndex, 1)
        temp = ListBox1.List(ListBox1.ListIndex, 0)
        temp.Offset(0, 1) = ListBox1.List(ListBox1.ListIndex, 1)
        temp.Offset(0, 2) = ListBox1.List(ListBox1.ListIndex, 2)
        temp.Offset(0, 3) = ListBox1.List(ListBox1.ListIndex, 3)
    Set temp = Nothing
End Sub
Private Sub UserForm_Activate()
    Dim Arr0
    Dim MRow As Integer
   
     MRow = Sheet3.Range("b" & Rows.Count).End(xlUp).Row + 1
     Arr0 = Sheet3.Range("a2:d" & MRow)
     ListBox1.List = Arr0
End Sub

TA的精华主题

TA的得分主题

发表于 2012-11-13 10:56 | 显示全部楼层

勉强做以下代码分析,VBA 的窗体,控件,按钮和代码是一体的,你单拿出一段代码来,别人只能猜测。
个人对ListBox 控件完全不熟,没用过,又没有附件例子,只能根据代码猜测。
  1. Private Sub CommandButton1_Click()  '按钮CommandButton1 被单击左键时激活此事件过程
  2. '很明显这段代码是按某按钮将List box 里显示的内容写入当前单元格所在的行
  3.     Dim temp As Range                        ' 定义一个叫temp 的单元格区域对象            
  4.     Set temp = ActiveWindow.ActiveCell     ' 将temp 设为当前激活窗口的激活单元格  
  5.         temp = ListBox1.List(ListBox1.ListIndex, 0)  ' 将该单元格对象的值设为ListBox1 下拉控件的index 为0 的输入值
  6.         temp.Offset(0, 1) = ListBox1.List(ListBox1.ListIndex, 1)'temp 右边一个单元格赋予Listbox1 上面的值
  7.         temp.Offset(0, 2) = ListBox1.List(ListBox1.ListIndex, 2)
  8.         temp.Offset(0, 3) = ListBox1.List(ListBox1.ListIndex, 3) '以上相同
  9.     Set temp = Nothing  '清除内存
  10. End Sub
  11. Private Sub CommandButton2_Click() '鼠标点击此按钮后关闭当前窗体,类似点击退出按钮
  12.      Unload Me
  13. End Sub
  14. Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  15. '具体不逐条分析了,这个事件的作用是双击ListBox 控件将当前工作表激活单元格当前行右边的几个单元格内容在ListBox 相应控件的显示位置显示出来
  16.     Dim temp As Range
  17.     Set temp = ActiveWindow.ActiveCell
  18. 'MsgBox ListBox1.List(ListBox1.ListIndex, 0)
  19. 'MsgBox ListBox1.List(ListBox1.ListIndex, 1)
  20.         temp = ListBox1.List(ListBox1.ListIndex, 0)
  21.         temp.Offset(0, 1) = ListBox1.List(ListBox1.ListIndex, 1)
  22.         temp.Offset(0, 2) = ListBox1.List(ListBox1.ListIndex, 2)
  23.         temp.Offset(0, 3) = ListBox1.List(ListBox1.ListIndex, 3)
  24.     Set temp = Nothing
  25. End Sub

  26. Private Sub UserForm_Activate()
  27. '这是显示ListBox 控件的窗体被激活引发的事件
  28.     Dim Arr0
  29.     Dim MRow As Integer
  30.    
  31.      MRow = Sheet3.Range("b" & Rows.Count).End(xlUp).Row + 1 '取得Sheet3 工作表使用区域最后一行的行数
  32.      Arr0 = Sheet3.Range("a2:d" & MRow) '将Sheet3 工作表a列 a2 单元格起 到d 列最后一行对应的单元格区域的内容导入Arr0 的数组中
  33.      ListBox1.List = Arr0 '将Arr0 的内容读入控件的列表区域
  34. End Sub

复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-13 19:42 | 显示全部楼层
hehex 发表于 2012-11-13 10:56
勉强做以下代码分析,VBA 的窗体,控件,按钮和代码是一体的,你单拿出一段代码来,别人只能猜测。
个人 ...

老师你好,谢谢你,能不能帮我做个编号自动加1的宏 比喻编号120007,单击保存按键后是120008。

TA的精华主题

TA的得分主题

发表于 2012-11-13 21:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
菜鸟0007 发表于 2012-11-13 19:42
老师你好,谢谢你,能不能帮我做个编号自动加1的宏 比喻编号120007,单击保存按键后是120008。

你最好把附件带上,然后说明是在哪里加编号。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 18:24 , Processed in 0.035923 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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