中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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


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


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

031 刪除工作表中的空行

如果需要?jiǎng)h除工作表中所有的空行,可以使用下面的代碼。

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)判斷,因?yàn)槿绻ぷ鞅碇写嬖趦尚屑皟尚幸陨系南噜徔招?,從最小行?shù)開始循環(huán)刪除的話,當(dāng)?shù)谝恍锌招斜粍h除后,被刪除行下面的一行會往上移位,而此時(shí)For...Next循環(huán)的計(jì)數(shù)器已經(jīng)加1,所以會出現(xiàn)漏刪除的現(xiàn)象。

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

應(yīng)用于Range對象的Delete方法刪除對象,語法如下:

expression.Delete(Shift)

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

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

032 刪除工作表的重復(fù)行

在實(shí)際應(yīng)用中,可能需要?jiǎng)h除工作表中A列的重復(fù)內(nèi)容而只保留一行,那么可以借助工作表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(i1)) > 1 Then

.Rows(i).Delete

End If

Next

EndWith

End Sub

代碼解析:

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

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

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

033 定位刪除特定內(nèi)容所在的行

如果需要?jiǎng)h除工作表區(qū)域中特定內(nèi)容所在的行,可以使用定位的方法快速刪除,無需使用For...Next循環(huán)對單元格逐個(gè)進(jì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”的單元格內(nèi)容替換成空白。關(guān)于Replace方法請參閱▲6 。

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

034 判斷是否選中整行

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

Private Sub Worksheet_SelectionChange(ByVal TargetAs Range)

If Target.Rows.Count= 1 Then

If Target.Columns.Count = 256 Then

MsgBox '您選中了整行,當(dāng)前行號' & Target.Row

End If

EndIf

End Sub

代碼解析:

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

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

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

4行代碼當(dāng)用戶選中一整行時(shí)顯示一個(gè)消息框,提示用戶當(dāng)前選擇的行號。

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

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

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

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

Private Sub Workbook_Open()

Sheet1.ScrollArea= 'B4:H12'

End Sub

代碼解析:

工作簿的Open事件,在打開該工作簿時(shí)設(shè)置Sheet1工作表的滾動區(qū)域?yàn)椤?/span>B4:H12單元格區(qū)域。

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

Sheet1.ScrollArea =““

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

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

這時(shí)可以通過獲取該列表區(qū)域中可見單元格的方法得到篩選結(jié)果的單元格區(qū)域,并復(fù)制到工作表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表中的篩選結(jié)果復(fù)制到工作表Sheet2中。

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

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

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

expression.Copy(Destination)

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

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

037 使用高級篩選獲得不重復(fù)記錄

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

示例代碼如下:

Sub Filter()

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

Action:=xlFilterCopy,Unique:=True,_

CopyToRange:=Sheet2.Range('A1')

End Sub

代碼解析:

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

AdvancedFilter(Action,CriteriaRange,CopyToRange,Unique)

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

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

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

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


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

聯(lián)系客服