ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-10 08:50 | 显示全部楼层

先回konggs兄,我发的代码是随机选择的有深有浅,是需要一定的基础,有空我链接一些基础资料进来(可能是链接一个原先的入门帖子)

lj1226189兄,你这样处理相当于定义的数组要大于数据总量,数组的最后一段是没有赋值的,也就是空,虽然也能达到目的,但跟动态定义数组没有关联,就这个题我觉得可以这样:第一列定义一个数组,赋值到一个动态数组里,然后按列循环,第二列重新定义一个数组,再增加到原先那个动态数组里,一直到最后一列,中间最好还是加上空白判断,最后按动态数组的大小赋值给单元格,应该可以的

TA的精华主题

TA的得分主题

发表于 2005-8-10 10:02 | 显示全部楼层
我还是去把兰哥的看完,再来好了。

TA的精华主题

TA的得分主题

发表于 2005-8-10 10:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

龙三老师我做的这个如果中间有空的话也可能达到目的!

例如b列b1:b15不为空,但b16:b19为空,b20:b80又不为空但仍可以达到目的!

龙三老师能否做一个逐列循环的例子供大家学习!

谢谢!

前面有人建议把这个帖子置顶,我看没有必要!真正的好帖子是不要置顶的!

[此贴子已经被作者于2005-8-10 10:23:14编辑过]

TA的精华主题

TA的得分主题

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

10、『Split与动态数组结合例子』,代码较长,我就不复制了,请看附件有注释 VDtHlf6d.rar (12.04 KB, 下载次数: 465)

lj1226189兄,关于你说的问题,在这个例子里已经包含了,里面有定义动态数组的方法,你慢慢看

[此贴子已经被作者于2005-8-10 13:15:37编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-10 13:06 | 显示全部楼层

11、再来一个split函数的例子,单元格内容互换,选中两个单元格,然后点击右键,两个数据就会交换

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim a Dim T With Selection If .Count = 2 Then '当选择的单元格个数为2时执行 If InStr(1, .AddressLocal, ":") > 0 Then '选中两个单元格,它的地址只有两种情况 a = Split(.AddressLocal, ":") '一种如“A1:A2" Else a = Split(.AddressLocal, ",") '一种如"A1,A3" End If '用split把这两种情况分开,则a(0)等于第一个单元格地址,a(1)为第二个单元格地址 T = Range(a(0)) '用T作为中间变量,转换两个单元格里面的值 Range(a(0)) = Range(a(1)) Range(a(1)) = T End If End With Cancel = True '取消点击右键时弹出菜单 End Sub

[此贴子已经被作者于2005-8-10 13:15:59编辑过]

TA的精华主题

TA的得分主题

发表于 2005-8-10 13:29 | 显示全部楼层
以下是引用Long_III在2005-8-10 12:44:23的发言:

10、『Split与动态数组结合例子』,代码较长,我就不复制了,请看附件有注释

Long_III,你好,从这里我学到很多东西,真的很感谢你.

现在我还有件事想麻烦你一下,请问汇总重复数据,然后件数进行合计,应该怎么设计呢.如:AA 2件, AA 3件, 汇总后:AA 5件.

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-10 13:38 | 显示全部楼层

to hzq56,用一个集合collection得到的,看代码h.Add arr1(i), CStr(arr1(i)) '用集合得到规格的不重复数据,由于集合里不能出现重复数据,在最前面加上On Error Resume Next,这样集合里就都不重复了,然后调用了工作表函数sumif,循环求得不重复值对应的合计值

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-10 14:17 | 显示全部楼层

12、有趣的画线 NlZbXA9u.rar (11.57 KB, 下载次数: 393)

Private Sub CommandButton1_Click() Dim rng As Range, c As Range Dim arr() Dim k%, i%

Set rng = [a1:h26].SpecialCells(xlCellTypeConstants) '定位a1:h26里所有常量的单元格 ReDim arr(1 To rng.Count, 1 To 2) '重新定义一个数组,记录每个有数字的单元格的坐标 For Each c In rng k = k + 1 arr(k, 1) = c.Left + c.Width / 2 '单元格的右侧距离+单元格本身宽度的一半,即等于单元格正中间距左侧的位置,X arr(k, 2) = c.Top + c.Height / 2 '单元格的顶端距离+单元格本身高度的一半,即等于单元格正中间距顶端的位置,Y Next

For i = 1 To k - 1 '增加画线,四个数据为:起点的X坐标,Y坐标,终点的X坐标,Y坐标 ActiveSheet.Shapes.AddLine arr(i, 1), arr(i, 2), arr(i + 1, 1), arr(i + 1, 2) Next

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-10 16:16 | 显示全部楼层

13、find方法的应用(针对新手不大会用这个,而且不爱看帮助的人),可以说类似于帮助里的那个例子 sBDoPHQc.rar (8.92 KB, 下载次数: 509)

(这也是我刚学find方法问的问题),代码

Sub hjs() Dim r As Range Dim i% '定义i为整型,缩写 Dim First$ '定义first为字符串,缩写

Application.ScreenUpdating = False '关闭屏幕更新,加快代码执行 Set r = Cells.find("#", lookat:=xlPart) '在工作表里查找#号,xlpart表示单元格不用完全匹配

If Not r Is Nothing Then '当找到时 First = r.Address '用first记录下第一个单元格的地址 Do '查找下一个的循环过程 For i = 1 To Len(r) '对找到的单元格,从第一个字符到最后一个字符 If Mid(r, i, 1) = "#" Then '假如是#号时,则设置它为上标 r.Characters(Start:=i, Length:=1).Font.Superscript = True End If Next Set r = Cells.FindNext(r) '在找到的单元格之后,查找新一个单元格 Loop Until r.Address = First '重复整个过程,一直到最后找到的单元格的地址等于第一个单元格的地址 End If Application.ScreenUpdating = True End Sub

链接一个类似的http://club.excelhome.net/viewth ... xtra=&page=1#121408

[此贴子已经被作者于2005-9-6 14:26:56编辑过]

TA的精华主题

TA的得分主题

发表于 2005-8-10 22:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 23:10 , Processed in 0.047895 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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