[VBA]自動項次編號
工作的時候需要對於工項編碼,但是工項不是連續的所以沒辦法一次往下拉自動填入完成,這個時候就是用DO迴圈來做就很方便。
程式碼說明
x
1'自動抓取第6行非空白列之列數2r = Cells(ActiveSheet.Rows.Count, 6).End(xlUp).Row3'設定編號的起始值4xc2 = 1 5'設定列數判斷的起始值6xc1 = 578Do Until xc1 = r9 If Cells(xc1, 2).HorizontalAlignment = xlLeft And Cells(xc1, 2) <> "" Then10 Cells(xc1, 1).Value = xc211 xc2 = xc2 + 112 End If13 xc1 = xc1 + 114Loopxc1不一定要從1開始,因為最上列通常為表格標題或說明,但就算設成1也不會有影響。- 利用項目的性質判斷是否編碼,要編碼的工項有
對齊向左及非空白這兩種性質,所以利用.HorizontalAlignment = xlLeft及<> ""來作為判斷式。 - 假設以上條件成立,則位置
(xc1,1)的值為xc2,編碼起始值為1。成功填寫之後要記得讓xc2+1,數列才會變成1、2、3……,如果+2會變成1、3、5、7……以此類推,不一定要整數,小數也是可以。 - Do迴圈沒有預設前進的值,也就是說如果沒寫
xc1 = xc1 + 1這行,xc1永遠不會變成r,就會造成無限迴圈的情況,一般判斷行列數都建議使用for迴圈比較方便。

沒有留言:
張貼留言