VBA++ 题记:一剪闲云一溪月,一程山水一年华。一世浮生一刹那,一树菩提一烟霞。岁月静好,现世安稳。纵算云水漂泊,心若安宁,亦可淡若清风。希望见者与不见者都能安康。静下心,多学习有用的知识,多提高自己的水平和能力,这才是正道。时间就像一张网,你撒在哪里,你的收获就在哪里。谨记自己的方向,这是路之所在。适当节制自我的各种欲望,谁都逃不过时间的历练,谁都是命运的行者,谁都是在人生的道路上一步一趋的行路人。你要做的,是悄悄地去努力,等你变厉害之后,把自己也吓一跳,才是你现在需要当作目标的事。把生活与工作打理好,不负年华。不要轻言你是在为谁付出和牺牲,其实所有的付出和牺牲最终的受益人都是自己。
今日内容是和大家分享VBA编程中常用的 “积木”过程代码,这些内容大多是我的经验的记录。来源于我多年的经验。今日分享的是第NO.220,内容是:动态数组的赋值及回填过程
********************************************************************
VBA过程代码220:动态数组的赋值及回填过程
Sub MyNZsmarttwo()
Dim i%, xrow%, j%, xcount%
Dim arr() As String
erow = [c65536].End(3).Row '最后一个非空单元格行号
j = 1 '数组索引号
xcount = Application.WorksheetFunction.CountIf([c1:c65536], "王*") '统计有多少姓王的学生
ReDim arr(1 To xcount) '重新定义数组大小,元素共有xcount个
For i = 1 To erow
If Left(Cells(i, 3).Value, 1) = "王" Then
arr(j) = Cells(i, 3).Value '给数组元素赋值
j = j + 1 '索引号加1
End If
Next i
[d1:d65536].Clear '清除原有数据
[d1].Resize(xcount, 1) = Application.WorksheetFunction.Transpose(arr) '将数组输入单元格区域
End Sub
代码解析:mynz过程将一个C列存储了学生姓名工作表,有姓“王”的学生存储在动态数组arr中,然后回填到工作表中。在回填的过程的中利用了工作表的转置函数Application.WorksheetFunction.Transpose(arr) 是将数组输入单元格区域。这个单元格区域用的是Resize函数扩展来的,这个函数就是将一个原单元格区域进行扩展,扩展的行数是xcount列数不做扩展。
*******************************************************
VBA是实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现推出了四部VBA学习教程,这些是我多年编程经验的记录,也是我“积木编程”思想的体现。每一讲都是一块“积木”,可以独立的完成某些或者某类的过程。利用这些可以大大提高自己的编程效率。
第一:“VBA代码解决方案”是PDF电子版,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级人员必备的资料;
第二:“VBA数据库解决方案”是PDF电子版,数据库是数据处理的利器,对于中级人员应该掌握这个内容了。
第三:“VBA数组与字典解决方案”是PDF电子版,讲解VBA的精华----字典,是我们打开思路,提高代码水平所必备。
第四:“VBA代码解决方案”视频。是专门给初学者讲解的视频教程,通过147讲的视频学习可以让你更快的掌握这门技能。
*******************************************************
浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。
阡陌人,昏灯明暗,忍顾长亭,多少VBA人,暗夜中,悄声寻梦,盼却天明,怎无凭!
这几句词是我借鉴过来的对VBA人员的写照,正如一位朋友说的那样:学vba之前蛮悠闲的,学之后就没时间悠闲了。确实,还是很精确地比喻,当你会了一门手艺,你就有了可以被利用的价值,这种价值的反作用就是自己价值的提高。愿每位VBA人员都有这样的价值吧!
懒惰是很奇怪的东西,它使你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉。不要懒惰,还是多学习些有用的知识吧,哪怕只是点滴。