[急]徵求Excel 巨集(VB)高手幫忙格式化欄位

小弟目前的工作資料需要做格式化
但是因為太大量,所以巨集的部份已經沒辦法用錄製的了...
想請問版上神人,此狀況該如何使用?

狀況描述:
1.資料列位為1~5464(且會隨著資料量變化而持續增加)
2.資料欄位為M~X,此欄位永遠固定不會改變
3.列位從9開始,固定加四類推(即M9:X9、M13:X13、M17:X17、M21:X21....)至資料末端
4.這些資料要設條件化格式,如果大於等於0的話儲存格變成綠色

以上,麻煩各位大大了
2012-11-17 19:18 發佈

Sub Macro1()
Dim i As Integer
Dim EndLine As Integer
'抓取M欄位的最後一筆資料所在列號
EndLine = [M65536].End(xlUp).Row

'清除目前工作表格式
ActiveSheet.Cells.Select
Selection.FormatConditions.Delete

'每4筆資料跳一次計數器
For i = 9 To EndLine Step 4
'設定格式
Range("M" & i & ":X" & i).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="0"
Selection.FormatConditions(1).Interior.ColorIndex = 4
Next i
End Sub

學點程式的觀念吧...這個很簡單...
除了EndLine = [M65536].End(xlUp).Row這招要點經驗以外其他主要部份不到5分鐘就寫完了...
不過就算不會這招也可以直接用最後一筆列號去控制迴圈...
感謝大大的幫忙

其實一開始就有想到用 For i 迴圈
但是程式碼畢業後就沒在使用...也忘了差不多
只好來求助了

============================================

Sub Macro1
Dim i As Integer
Dim EndLine As Integer

↑這是設定資料端的起點與輸入的區段
即沒資料時就會停止語法?

'抓取M欄位的最後一筆資料所在列號
EndLine = [M65536].End(xlUp).Row

↑(xlUp).Row代表的意義是?

Selection.FormatConditions.Add Type:=xlCellValue
↑加入顏色格式?

Operator:=xlGreater, Formula1:="0"
↑這段用意是?

Selection.FormatConditions(1).Interior.ColorIndex = 4
↑ColorIndex = 4的4是色碼?



aerwkimo wrote:
Sub Macro1
Dim i As Integer
Dim EndLine As Integer

↑這是設定資料端的起點與輸入的區段
即沒資料時就會停止語法?

這是宣告變數...
aerwkimo wrote:
'抓取M欄位的最後一筆資料所在列號
EndLine = [M65536].End(xlUp).Row

↑(xlUp).Row代表的意義是?

End(xlUp)簡單的說就是"End"鍵+"上"鍵...
會直接跳到資料的最後一行...
後面的.row就是傳回所在列號...
froce wrote:
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="0"
Selection.FormatConditions(1).Interior.ColorIndex = 4

這段就是在設定格式...我是用巨集錄出來的...
第一段是加一個條件...Type:=xlCellValue代表這條件是用儲存格的值做篩選...
Operator:=xlGreater則是"大於"...

Selection.FormatConditions(1).Interior.ColorIndex = 4
就是上面設定的格式如果符合...就變成綠色...

你錄巨集出來後可以好好研究一下...
很多時候錄出來的巨集會多很多不必要的步驟...

froce wrote:
除了EndLine = [M65536].End(xlUp).Row這招要點經驗以外其他主要部份不到5分鐘就寫完了...
請教一下,現在2007以上每欄的資料數已經超過65536
對於同時要讓2003或2007以上版本都可以使用的寫法,您會怎麼處理呢?
一個中文,各自表述
ptx wrote:
請教一下,現在2007以上每欄的資料數已經超過65536
對於同時要讓2003或2007以上版本都可以使用的寫法,您會怎麼處理呢?

這寫法應該沒有問題...
真的會用到這麼多筆數的話...要把前面的變數宣告為Long...
Integer的範圍是-32768~32767而已...

要注意的是2003錄製的巨集拿去2007應該是都可以用...
2007拿到2003則不一定...
可能會有一些屬性或功能2003沒有...

froce wrote:
這段就是在設定格式....(恕刪)


瞭解!!

感謝大大

趕緊來研究一下
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?