国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VBA常用代碼解析(第六講)

正文開始前,先插播一條廣告:復制下面黃色內容后打開手機淘寶即可查看!感謝各位的支持!


去老繭,脫死皮!番茄派足膜!,使用¥賺大了!拍下立即送卡通姓名貼?。屜阮A覽(長按復制整段文案,打開手機淘寶即可進入活動內容)


下面應一位粉絲的要求,開始把我以前的一些學習資料整理了一下,然后分20期發(fā)給各位有需要的朋友,您也可以索取源文件,郵箱:546039945@qq.com!

031 刪除工作表中的空行

如果需要刪除工作表中所有的空行,可以使用下面的代碼。

Sub DelBlankRow()

DimrRow As Long

DimLRow As Long

Dimi As Long

rRow= Sheet1.UsedRange.Row

LRow= rRow Sheet1.UsedRange.Rows.Count - 1

Fori = LRow To rRow Step -1

If Application.WorksheetFunction.CountA(Rows(i))= 0 Then

Rows(i).Delete

End If

Next

End Sub

代碼解析:

DelBlankRow過程刪除工作表中已使用的區(qū)域的所有空行。

5行代碼獲得工作表中已使用區(qū)域的首行行號,其中使用UsedRange屬性返回工作表中已使用的區(qū)域。

6行代碼獲得工作表中已使用區(qū)域的最后一行行號。

7行到第11行代碼從最大行數(shù)至最小行數(shù)循環(huán)判斷指定行是否為空行,若為空行則刪除該行。

注意此處一定要從最大行數(shù)至最小行數(shù)開始循環(huán)判斷,因為如果工作表中存在兩行及兩行以上的相鄰空行,從最小行數(shù)開始循環(huán)刪除的話,當?shù)谝恍锌招斜粍h除后,被刪除行下面的一行會往上移位,而此時For...Next循環(huán)的計數(shù)器已經加1,所以會出現(xiàn)漏刪除的現(xiàn)象。

其中第8、9行代碼使用工作表CountA函數(shù)判斷當前行已使用單元格的數(shù)量,如果為零說明此行是空行則使用Delete刪除。

應用于Range對象的Delete方法刪除對象,語法如下:

expression.Delete(Shift)

參數(shù)expression是必需的,返回一個Range對象。

參數(shù)Shift是可選的,指定刪除單元格時替補單元格的移位方式??蔀橐韵?/span> XlDeleteShiftDirection常量之一:xlShiftToLeftxlShiftUp。如果省略該參數(shù),則Microsoft Excel將根據(jù)區(qū)域的圖形決定移位方式。

032 刪除工作表的重復行

在實際應用中,可能需要刪除工作表中A列的重復內容而只保留一行,那么可以借助工作表CountIf函數(shù)來完成,如下面的代碼所示。

Sub DeleteRow()

DimR As Integer

Dimi As Integer

WithSheet1

R = .[a65536].End(xlUp).Row

For i = R To 1 Step -1

If WorksheetFunction.CountIf(.Columns(1),.Cells(i,1)) > 1 Then

.Rows(i).Delete

End If

Next

EndWith

End Sub

代碼解析:

DeleteRow過程刪除工作表A列重復單元格所在的整行內容,只保留一行。

5行代碼取得工作表中A列的最后一個非空單元格的行號,關于Range對象的End屬性請參閱▲3 。

6行到第10行代碼從最大行數(shù)至最小行數(shù)循環(huán)判斷A列單元格內容是否重復并刪除重復單元格所在的整行。和▲32 一樣,此處For...Next循環(huán)也要從最大行數(shù)至最小行數(shù)開始循環(huán)判斷,否則可能會刪除不凈。其中第7行代碼使用工作表CountIf函數(shù)判斷單元格內容是否重復,如果重復則刪除該單元格所在的行。

033 定位刪除特定內容所在的行

如果需要刪除工作表區(qū)域中特定內容所在的行,可以使用定位的方法快速刪除,無需使用For...Next循環(huán)對單元格逐個進行判斷。

示例代碼如下:

Sub SpecialDelete()

DimR As Integer

WithSheet1

R = .Range('a65536').End(xlUp).Row

.Range('a2:a' & R).Replace'Excel'““,2

.Columns(1).SpecialCells(4).EntireRow.Delete

EndWith

End Sub

代碼解析:

SpecialDelete過程刪除工作表A列單元格中顯示為“Excel”的行。

5行代碼使用Replace方法將工作表A列中顯示為“Excel”的單元格內容替換成空白。關于Replace方法請參閱▲6 。

6行代碼使用SpecialCells方法定位到工作表A列中所有的空單元格,使用Range對象的EntireRow屬性返回其所在的整個行一次性刪除。關于SpecialCells方法請參閱▲4 。

034 判斷是否選中整行

通過當前選擇的單元格區(qū)域的單元格數(shù)目與行數(shù)或列數(shù)相比較,判斷用戶是否選中了整行或整列,如下面的代碼所示。

Private Sub Worksheet_SelectionChange(ByVal TargetAs Range)

If Target.Rows.Count= 1 Then

If Target.Columns.Count = 256 Then

MsgBox '您選中了整行,當前行號' & Target.Row

End If

EndIf

End Sub

代碼解析:

工作表的SelectionChange事件,判斷用戶是否選中了工作表中一整行單元格區(qū)域。

2行代碼中的Target.Rows.Count返回目標區(qū)域的行數(shù),確定用戶當前選擇區(qū)域的總行數(shù)是否為1。

3行代碼中的Target.Columns.Count返回目標區(qū)域的列數(shù),確定用戶當前選擇區(qū)域總列數(shù)是否為256。

4行代碼當用戶選中一整行時顯示一個消息框,提示用戶當前選擇的行號。

035 限制工作表的滾動區(qū)域

如果希望限制工作表中滾動的區(qū)域,可以通過設置WorkSheet對象的ScrollArea屬性來實現(xiàn)。ScrollArea屬性使用以A1樣式的區(qū)域引用形式(字符串類型)返回或設置工作表允許滾動的區(qū)域。當設置了工作表滾動區(qū)域之后,用戶不能選定滾動區(qū)域之外的單元格,但仍然可以選定區(qū)域之外的其他對象(例如圖形、按鈕等),同時工作表的一些相應功能可能被禁止(例如工作表全選、選中整行或整列等)。

VBE中的工程管理窗口選擇相應工作表對象,然后在其屬性窗口中設置ScrollArea屬性,即可限制工作表中滾動的區(qū)域。

但是Excel不會記憶該項設置,當再次打開該工作簿時,ScrollArea屬性將被重置,用戶必須重新設置ScrollArea屬性才能限制工作表中的滾動區(qū)域,解決方法是使用代碼在工作簿打開時對ScrollArea屬性進行設置,如下面的代碼所示。

Private Sub Workbook_Open()

Sheet1.ScrollArea= 'B4:H12'

End Sub

代碼解析:

工作簿的Open事件,在打開該工作簿時設置Sheet1工作表的滾動區(qū)域為“B4:H12單元格區(qū)域。

如果需要取消滾動區(qū)域的限制,可以將ScrollArea屬性值設置為空,如下面的代碼所示。

Sheet1.ScrollArea =““

036 復制自動篩選后的數(shù)據(jù)區(qū)域

用戶在對數(shù)據(jù)列表進行自動篩選后,往往希望將自動篩選的結果復制到其它地方。

這時可以通過獲取該列表區(qū)域中可見單元格的方法得到篩選結果的單元格區(qū)域,并復制到工作表Sheet2中,如下面的代碼所示。

Sub CopyFilter()

Sheet2.Cells.Clear

WithSheet1

If .FilterMode Then

.AutoFilter.Range.SpecialCells(12).CopySheet2.Cells(1,1)

End If

EndWith

End Sub

代碼解析:

CopyFilter過程將Sheet1表中的篩選結果復制到工作表Sheet2中。

2行代碼清除Sheet2表中數(shù)據(jù)。

4行代碼判斷Sheet1表是否處于自動篩選狀態(tài)。FilterMode屬性返回工作表是否處于篩選模式,如果指定工作表中包含已篩選序列且該序列中含有隱藏行,則該值為True。

5行代碼通過AutoFilter對象的Range屬性返回工作表的自動篩選列表區(qū)域,再使用SpecialCells方法獲取該列表區(qū)域中可見單元格(SpecialCells方法請參閱▲4 ),得到篩選結果的單元格區(qū)域,然后使用Copy方法將結果區(qū)域復制到工作表Sheet2中,應用于Range對象的Copy方法將單元格區(qū)域復制到指定的區(qū)域或剪貼板中,語法如下:

expression.Copy(Destination)

參數(shù)expression是必需的,該表達式返回一個Range對象。

參數(shù)Destination是可選的,指定區(qū)域要復制到的目標區(qū)域。如果省略該參數(shù),則將該區(qū)域復制到剪貼板中。

037 使用高級篩選獲得不重復記錄

在數(shù)據(jù)列表中,如果要將其中不重復的記錄復制到另一工作表中,則可以通過高級篩選功能實現(xiàn)。

示例代碼如下:

Sub Filter()

Sheet1.Range('A1').CurrentRegion.AdvancedFilter_

Action:=xlFilterCopy,Unique:=True_

CopyToRange:=Sheet2.Range('A1')

End Sub

代碼解析:

Filter過程使用AdvancedFilter方法對單元格A1的當前區(qū)域篩選不重復的記錄,并將篩選結果復制到工作表Sheet2中。應用于Range集合的AdvancedFilter方法語法如下:

AdvancedFilter(ActionCriteriaRange,CopyToRange,Unique)

參數(shù)Action是必需的,可以為表格所列的 XlFilterAction常量之一。

參數(shù)CriteriaRange指定高級篩選操作的條件區(qū)域,缺省時表示沒有條件限制。

參數(shù)CopyToRange表示指定被復制行的目標區(qū)域,僅當ActionxlFilterCopy時有效,否則忽略本參數(shù)。

參數(shù)Unique指示是否選擇不重復的記錄,如果其值為True,則重復出現(xiàn)的記錄僅保留一條;如果其值為 False(默認值),則篩選出所有符合條件的記錄。


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
限定Excel工作表可用編輯范圍的幾種方法
第三十六節(jié) 如何讓別人只能看、不能改你的工作表
Excel
在VBA代碼中引用工作表單元格區(qū)域的方式小結
excel vba 限制工作表的滾動區(qū)域代碼
VBA實戰(zhàn)技巧13: 同步多工作表指定區(qū)域的數(shù)據(jù)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服