三原則優(yōu)化錄制代碼 一屬性玩轉(zhuǎn)合并表格
主要內(nèi)容:
一泽疆、Worksheet.cells與Range.cells的區(qū)別
(1)Worksheet.cells(1,1)代表工作表所有單元格的第一行第一列支子;
Range.cells(1,1)代表該Range內(nèi)部的第一行第一列沸枯;
(2)同理Worksheet.rows(8)與Rang.Rows(8)的區(qū)別
(3)Worksheet.rows和Range.columns均可以一次返回多行/列嫌褪。比如
Rows.("2:3")/columns("B:E")
二、合并單元格
(1)多個單元格合并之后,仍被VBA認(rèn)為是各自獨立的單元格蔫缸;
(2)第一個單元格的值為合并之后顯示的內(nèi)容,其他單元格被認(rèn)為是空值贺嫂;
(3)判斷是否有合并單元格滓鸠,Range.MergeCells屬性:
當(dāng)該Range完全合并為一個單元格時,該屬性為True第喳;
當(dāng)該Range完全不包含合并單元格時糜俗,該屬性為False;
其他情況返回:Null
(4)判斷一個變量是否為Null,可以用“=”而要使用函數(shù)IsNull(X)
If IsNull(Range("E6:F8").MergeCells)=True Then
Sub 判斷是否有合并單元格的標(biāo)準(zhǔn)表達(dá)()
? ? Dim r As Range
? ? Set r = Range("e7:f8")
? ? If r.MergeCells = True Then
? ? MsgBox "該區(qū)域完全合并為一個單元格"
? ? ? ? ElseIf r.MergeCells = False Then
? ? ? MsgBox "該單元格不包含任何合并區(qū)域"
? ? ? ElseIf IsNull(r.MergeCells) Then
? ? ? MsgBox "該區(qū)域有部分單元格為合并狀態(tài)“"
? ? ? End If
End Sub
(5)Mergecells還可以直接用來合并單元格悠抹。
Sub 合并單元格練習(xí)()
? ? Dim r As Range
? ? Set r = Range("B3:C4")
? ? r.MergeCells = True
End Sub
提示:r.Mergecells=False則解除合并
(6)Range.Merge:將該Range合并為一個單元格珠月;Range.UnMerge:取 消合并。
Sub 合并單元格練習(xí)2()
? ? Application.DisplayAlerts = False
? ? Dim r As Range
? ? Set r = Range("D7:F9")
? ? r.Merge True
? ?Application.DisplayAlerts = True
End Sub
提示1:r.Merge可以按行合并楔敌;
提示2:Application.DisplayAlerts = False可以關(guān)閉提醒框啤挎;見基礎(chǔ)篇第二十一回。
(7)Select屬性卵凑,可以用來選中單元格庆聘。
工作表的Selection屬性可以幫我們找到當(dāng)前屏幕正處于選中狀態(tài)的Range區(qū)域。
Sub 選中標(biāo)紅練習(xí)()
? ? Dim r As Range, r1 As Range
? ? Set r = Selection
? ? For Each r1 In r
? ? ? ? If r1.Value > 500 Then
? ? ? ? ? ? r1.Interior.Color = vbRed
? ? ? ? End If
? ? Next
End Sub
(8)優(yōu)化錄制宏的代碼
提示1:宏在錄制過程中是模仿人類的操作選中單元格勺卢,這一操作非常消耗時間伙判。
提示2:合并錄制宏中的Select與Selection,直接應(yīng)用單元格的屬性黑忱,這是簡化錄制宏的最有效的方法宴抚。
提示3:刪除錄制宏中不必要的屬性設(shè)置。
提示4:盡可能的減少"."的使用甫煞。如Range.Cells.Font.Color=True菇曲,
盡量使用With? End with。
如:With Worksheets.Cells.Font
????????????.Color=VbRed
????????????.Bold =True
????????????.Intalic=True
????????End With