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