ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[接龙...]部分程序代码注释,目录更新20051222

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-13 20:12 | 显示全部楼层

再次感谢!这世界真美好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-15 13:33 | 显示全部楼层

41、按几种条件排序,多个数组的混和应用。数组的优势就是能最好的提高代码运行速度

思路:按列计算,先把每一列定义成一个数组,根据四个条件建立4个数组,然后分别给这四个数组赋值,对产生的4个数组排序,把排好序的数组重新组合成一个数组,赋值给单元格

iqEVNu6K.rar (23.73 KB, 下载次数: 257)

代码较长,需要对照看才易懂,里面有详细的注释!

TA的精华主题

TA的得分主题

发表于 2005-9-15 13:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
越来越复杂,也越来越有味道了!真是妙不可言、爱不释手!感谢Long_III老师无私奉献!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-15 14:06 | 显示全部楼层

42、用数组的绝对优势!数组的优势就是提高代码的运行数组,把单元格里的值放到内存数组里计算,将计算结果最终返回给单元格,特别适合程序里需要操作大量的单元格“值”的情况。下面的例子,一个是作者的原代码,反复操作单元格,速度奇慢,具体时间我没耐心计算,改用数组之后,却只用了0.08秒,而且是在我这种机器不是很好的情况下。

虽然数组在书写、要求等方面严一点点,但是它的效益却是很高的,建议初学者在学好工作表的操作之后,好好学习一下数组!这个程序的代码也许复杂一点点,等你完全明白之后你肯定会爱上数组!代码较长,就不附了,见附件。

iVJEPxgv.rar (27.17 KB, 下载次数: 300)

原帖子为http://club.excelhome.net/viewthread.php?tid=122071

增加一点点内容:常用数据类型及类型声明字符 数据类型 类型声明字符 Currency @ Double # Integer % Long & Single ! String $

[此贴子已经被作者于2005-9-15 16:14:35编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-15 14:26 | 显示全部楼层

43、对合并单元格的排序!说是排序,实际上是对它们进行了一次重新组合。思路:取出合并单元格里的需要排序的数据,形成一个数组,对这个数组排序,按排序好的数组,在原表中查找,找到之后就把它排在第一个,根据数组的顺序,依次往下排,直到最后一个

代码较长,就不附了,请看附件:

voIwIPkL.rar (16.58 KB, 下载次数: 227)

很多例子我都用到了数组,是因为数组太好了,不用它,都觉得不好意思!

TA的精华主题

TA的得分主题

发表于 2005-9-15 19:53 | 显示全部楼层
全部下载了龙三老师的程序,正在学习中.向你致敬!

TA的精华主题

TA的得分主题

发表于 2005-9-16 10:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

好东西,可惜我是菜鸟一类的,只能顶~~~~~

TA的精华主题

TA的得分主题

发表于 2005-9-17 19:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢

TA的精华主题

TA的得分主题

发表于 2005-9-18 17:08 | 显示全部楼层

谢谢各位大师热心帮助,使我这个门外人也学了很多VBA的知识,支持!!!!!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-19 17:29 | 显示全部楼层

44、筛选多列不重复值到新表的a列,Collection集合的应用。 BKcEHABM.rar (14.03 KB, 下载次数: 243)

代码:

Private Sub CommandButton1_Click() '把选中列的不重复值,转到新表里的a列 Dim i&, irow&, k&, Imax% '&是Long长整型的缩写,%为整型的缩写 Dim M& Dim rng As Range, c As Range Dim arr, arr1() '定义两个数组,arr为取单元格的值的数组 Dim h As New Collection '定义h为一个新的集合

Application.ScreenUpdating = False '关闭屏幕更新,防止闪屏和加快代码运行 Set rng = Selection '设置当前选择的区域为一变量rng Imax = Cells.SpecialCells(xlCellTypeLastCell).Column 'imax为当前工作表的最后一个单元格的列,即最后一列

On Error Resume Next '出现错误的时候,程序执行下一句,处理collection集合在add重复值时产生错误的请看 For i = 1 To Imax '从第一列到最后一列 Set c = Application.Intersect(rng, Columns(i)) '设置c为本列与选择的区域的交集 If Not c Is Nothing Then '如果这个交集存在的话 irow = Cells(65536, i).End(xlUp).Row '当前列的最后一非空行 arr = Range(Cells(1, i), Cells(irow, i)) '把本列的第一行到第irow行赋值给数组

For k = 1 To irow '在这个数组里作一个循环 If arr(k, 1) <> "" Then '如果它不等于空的时候 h.Add arr(k, 1), CStr(arr(k, 1)) '增加到集合里去 End If Next k

End If Next i Err.Clear '清除原先的错误参数,之后的代码如果产生错误的时候会报错 On Error GoTo 0

M = h.Count '集合的最大个数 If M = 0 Then Exit Sub

ReDim arr1(1 To M, 0) '定义一个数组,等于集合的所有格式 For i = 1 To M arr1(i, 0) = h(i) '把集合赋值给数组arr1 Next

With Sheet1.[a1] .EntireColumn.ClearContents '清除A1整列的数据 .Resize(M, 1).Value = arr1 '给单元格赋值,等于arr1数组 .Parent.Select '工作表sheet1选择 .CurrentRegion.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlNo 'a1的当前区域按升序排序 .Select 'a1选择 End With

Application.ScreenUpdating = True '还原系统设置 End Sub

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 08:32 , Processed in 0.038718 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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