Re: [VBA ] 根据数字做为重复次数贴上文字值

楼主: Yaiba (绯心刀刃)   2016-11-23 20:13:51
Sub 按钮1_Click()
Dim lastR As Integer
Dim indexI As Integer
Dim indexJ As Integer
Dim countK As Integer
lastR = Cells(Rows.Count, 1).End(xlUp).Row
countK = 2
For indexI = 2 To lastR
For indexJ = 1 To Cells(indexI, 2)
Cells(countK, 4) = Cells(indexI, 1)
countK = countK + 1
Next
Next
End Sub
不太会去写VBA的东西
所以第一行是看你用才用的(lastR)
另外变量宣告我有自己的命名方式
但之前有看文章好像不是很建议
我就特别不使用 用常人比较常的方式
你还有做很多特别的行为
像是清空之类的
但因为你想清空的空间
等一下就会被盖掉了
所以我就省略了...XD
至于几行做完
那我想不是重点
你会做Function
给人家的Code都可以很短啊
Sub 按钮1_Click()
Dim lastR As Integer
Dim indexI As Integer
Dim indexJ As Integer
Dim countK As Integer
lastR = Cells(Rows.Count, 1).End(xlUp).Row
countK = 2
For indexI = 2 To lastR
Call Function1(Cells(indexI, 1), Cells(indexI, 2), countK)
countK = countK + Cells(indexI, 2) '用ByRef就不用这行了
Next
End Sub
Sub Function1(str As String, dataCount As Integer, ByVal startIndex As Integer)
For indexJ = 1 To dataCount
Cells(startIndex, 4) = str
startIndex = startIndex + 1
Next
End Sub
这样也只要一行就完成了(假1行...XD 差别只在于Function是谁写的罢了)
不过好像很多人喜欢用几行来讨论程式的好坏
像是某功能只花几行就写出来了
或是
某系统我可是写了一万行(听别的女生说有人跟他炫耀 女生问我一万行很多吗)
对我来说
那些都不是重点
要看情况
如果九九乘法表写了99行Code....那效能是1等1.....XD
但我认为要看相对时间
如果你花1小时 结果完成的Code要跑40分钟
但又花了9小时 合计10小时 结果完成的Code只要跑4分钟
如果后面会大量执行(比如说超过15次)
你的时间就省下来了
如果你花1小时 结果完成的Code要跑4秒钟
但又花了9小时 合计10小时 结果完成的Code只要跑1秒钟
如果后面执行不到10800次
你的时间就亏了
(这里说的都是一些没有什么特别意义的小程式 只是想要去写 我就写了很多XD)
(这些小程式执行个几十次还有可能 上百次 或上千次根本不可能)
所以如果你多花时间能让未来时间是节省的
那就有意义
如果根本赚不回来
那乱写反而是比较赚的(意指不用特别去想效能问题)
故我写出来的程式 如果跑一次要N分钟 或N 10钟
我可能会去改效能 从40分钟变成现在2分钟 超有成就感的...
但如果是N秒钟
我完全不会去在意他的效能 去改写是浪费生命嘛...
所以就是在
程式开发时间
程式使用频率
程式可节省时间(不同写法的差异)
去做取舍
没有哪一种是比较对的方式
都是看情况的...
作者: luckid (luckid)   2016-11-23 20:35:00
Y大,十分感谢你,我过去的观念是错误的,感谢纠正也真的很谢谢Y大愿意无私提供程式码以供学习用.再次感谢可能Y大觉得只是废话,但对小弟而言帮助真的很大,感谢
作者: aais (我爱猫 猫爱我)   2016-12-21 17:31:00
好人!XD
作者: waiter337 (给开司一罐苏格登)   2015-01-24 19:38:00
先给推,慢慢看,这好像是我目前最需要的部份

Links booklink

Contact Us: admin [ a t ] ucptt.com