日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何用vba在word中快速移动或选中内容区域?

發(fā)布時間:2024/5/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用vba在word中快速移动或选中内容区域? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://www.exceloffice.net/archives/1598

在word中經(jīng)常需要操作特定位置的文本內(nèi)容,定位文本內(nèi)容就顯得尤為重要。

在word vba中Range、?Selection 對象有多種移動、定位、選擇文本內(nèi)容的方法和屬性。

在這些方法和屬性中,有兩類枚舉常量是經(jīng)常要用到的,一類是移動、定位、選擇的單位常量WdUnits,比如是按照行、段落、單詞、還是句子進行移動、定位。

以下就是在word中會用到的16種單位常量枚舉:

名稱說明常量的定義
wdCell121個單元格Const wdCell=12
wdCharacter11個字符Const wdCharacter=1
wdCharacterFormatting13字符格式Const wdCharacterFormatting=13
wdColumn9一列Const wdColumn=9
wdItem16選中的項目Const wdItem=16
wdLine5一行Const wdLine=5
wdParagraph4一個段落Const wdParagraph=4
wdParagraphFormatting14段落格式Const wdParagraphFormatting=14
wdRow10一行Const wdRow=10
wdScreen7一個屏幕Const wdScreen=7
wdSection8一個節(jié)Const wdSection=8
wdSentence3一句話Const wdSentence=3
wdStory6全文Const wdStory=6
wdTable15一個表格Const wdTable=15
wdWindow11一個窗口Const wdWindow=11
wdWord2一個單詞Const wdWord=2

另一類是移動、定位、選擇的方向枚舉常量WdMovementType,WdCollapseDirection等。

如下所示:

名稱說明常量的定義
wdExtend1將當(dāng)前的選擇區(qū)域的結(jié)尾擴展到指定單位的結(jié)尾Const wdExtend=1
wdMove0取消當(dāng)前的選擇區(qū)域,

?

然后將光標(biāo)移動到指定單位的結(jié)尾

Const wdMove=0
wdCollapseStart1取消當(dāng)前的選擇區(qū)域,然后將光標(biāo)定位到開頭Const wdCollapseStart=1
wdCollapseEnd0取消當(dāng)前的選擇區(qū)域,然后將光標(biāo)定位到結(jié)尾Const wdCollapseEnd=0

1.使用Collapse方法快速取消選擇內(nèi)容區(qū)域,使光標(biāo)不選中任何一個字符。

Visual Basic

Sub QQ1722187970() Const wdCollapseStart = 1 Const wdCollapseEnd = 0 With Word.Selection .Collapse (wdCollapseStart) '不帶參數(shù)默認是wdCollapseStart .Collapse End With End Sub

1

2

3

4

5

6

7

8

9

Sub QQ1722187970()

????Const wdCollapseStart = 1

????Const wdCollapseEnd = 0

????With Word.Selection

????????.Collapse (wdCollapseStart)

????????'不帶參數(shù)默認是wdCollapseStart

????????.Collapse

????End With

End Sub

如果在word文檔中選中了某段文本內(nèi)容區(qū)域,則運行上述代碼將取消選中文本內(nèi)容區(qū)域,光標(biāo)將定位在取消選擇前的文本內(nèi)容區(qū)域的起始位置。如果把參數(shù)改為wdCollapseEnd,則定位在結(jié)束位置。

如果要折疊的區(qū)域是一個段落,則wdCollapseEnd后將定位在當(dāng)前段落標(biāo)記符之后的一個字符前,也就是下一個段落的開頭。如果要折疊的區(qū)域是整個word文檔的最后一個段落,則wdCollapseEnd后將定位到最后一個段落標(biāo)記符前。

可以用以下的代碼進行驗證:

Visual Basic

Sub QQ1722187970() Dim oDoc As Document Set oDoc = Word.ActiveDocument Dim oRng As Range Dim oP As Paragraph With oDoc Set oP = .Paragraphs(1) Set oRng = oP.Range Debug.Print oRng.Start, oRng.End oRng.Collapse 0 Debug.Print oRng.Start, oRng.End End With End Sub

1

2

3

4

5

6

7

8

9

10

11

12

13

Sub QQ1722187970()

????Dim oDoc As Document

????Set oDoc = Word.ActiveDocument

????Dim oRng As Range

????Dim oP As Paragraph

????With oDoc

????????Set oP = .Paragraphs(1)

????????Set oRng = oP.Range

????????Debug.Print oRng.Start, oRng.End

????????oRng.Collapse 0

???????? Debug.Print oRng.Start, oRng.End

????End With

End Sub

2.使用HomeKey和?EndKey方法使光標(biāo)定位到指定單位內(nèi)容的開頭和結(jié)尾。

Visual Basic

Sub QQ1722187970() With Word.Selection .HomeKey wdLine Debug.Print .Start .EndKey wdLine Debug.Print .End End With End Sub

1

2

3

4

5

6

7

8

Sub QQ1722187970()

????With Word.Selection

????????.HomeKey wdLine

????????Debug.Print .Start

????????.EndKey wdLine

????????Debug.Print .End

????End With

End Sub

上述代碼將返回光標(biāo)所在的內(nèi)容區(qū)域的那一行的開始位置和那一行的結(jié)束位置。

如果要從當(dāng)前光標(biāo)所在的位置開始擴展選擇的話,可以添加第二個參數(shù),代碼如下:

Visual Basic

Sub QQ1722187970() With Word.Selection .HomeKey wdLine, wdExtend .EndKey wdLine, wdExtend End With End Sub

1

2

3

4

5

6

Sub QQ1722187970()

????With Word.Selection

????????.HomeKey wdLine, wdExtend

????????.EndKey wdLine, wdExtend

????End With

End Sub

經(jīng)過測試,HomeKey和?EndKey方法的第一個參數(shù)unit只能用wdLine和wdStory,其它單位都不能用。

3.使用StartOf、EndOf方法實現(xiàn)與HomeKey、EndKey類似的效果。

4.使用Expand方法擴展當(dāng)前的選擇區(qū)域

代碼如下:

Visual Basic

Sub QQ1722187970() With Word.Selection .Expand wdParagraph End With End Sub

1

2

3

4

5

Sub QQ1722187970()

????With Word.Selection

????????.Expand wdParagraph

????End With

End Sub

它與EndOf、EndKey、HomeKey等方法不同的是,它會自動當(dāng)當(dāng)前選擇區(qū)域左右擴展到指定的單位區(qū)域內(nèi),比如當(dāng)選中某個段落中的某些文本內(nèi)容時,使用上述代碼將自動選中當(dāng)前選擇區(qū)域所在的整段段落區(qū)域。

5.使用Shrink方法不斷地收縮選區(qū)

Shrink方法可以將當(dāng)前的選擇區(qū)域按照整個文檔(entire document),節(jié)( section),段落( paragraph),句子( sentence),單詞( word),插入點( insertion point)的順序不斷地收縮當(dāng)前的選擇區(qū)域。

6.使用Extend方法不斷地擴展選區(qū),或者按照指定的字符擴展選區(qū)。

與Shrink方法類似的,當(dāng)使用Extend方法不帶參數(shù)時,可以按照單詞(word),句子( sentence),段落( paragraph),節(jié)( section),整個文檔( entire document)這樣的順序依次擴展當(dāng)前的選擇區(qū)域。

當(dāng)Extend方法帶參數(shù)時,它可以帶一個字符參數(shù),表示將與當(dāng)前選擇區(qū)域的結(jié)尾位置開始向下尋找該字符,如果找到了就擴展當(dāng)前的選區(qū)到該字符。這里要特別注意的就是,該參數(shù)只能是一個字符,如果超過一個字符,該方法將會無效。

代碼如下:

Visual Basic

Sub QQ1722187970() With Word.Selection .Extend "點" End With End Sub

1

2

3

4

5

Sub QQ1722187970()

????With Word.Selection

????????.Extend "點"

????End With

End Sub

利用這個方法可以實現(xiàn)很多逐字符判斷的程序。

7.使用Move方法快速地前后移動任意的單位:

使用Move方法有兩個參數(shù),一個是Unit參數(shù),表示要移動的單位,另一個參數(shù)是Count,表示要移動的單位數(shù)量,如果是負數(shù)則往前移動,如果是正數(shù)則往后移動。

比如如下的代碼可以定位到中間的頁面:

Visual Basic

Sub QQ1722187970() '當(dāng)前位置插入一個分節(jié)符 Word.Selection.InsertBreak wdSectionBreakNextPage '繼續(xù)插入一個分節(jié)符 Word.Selection.InsertBreak wdSectionBreakNextPage '定位到中間的頁面 Word.Selection.Move wdSection, -1 End Sub

1

2

3

4

5

6

7

8

Sub QQ1722187970()

????'當(dāng)前位置插入一個分節(jié)符

????Word.Selection.InsertBreak wdSectionBreakNextPage

????'繼續(xù)插入一個分節(jié)符

????Word.Selection.InsertBreak wdSectionBreakNextPage

????'定位到中間的頁面

????Word.Selection.Move wdSection, -1

End Sub

?

其它相關(guān)文章推薦:

  • 如何用vba獲得word range對象所在的行的文本內(nèi)容?
  • 如何用vba判斷word文檔中是否有高亮(顏色)的文字?
  • 如何用vba批量刪除Word文檔中的空白頁?
  • 如何用vba刪除access數(shù)據(jù)庫中表的記錄?
  • 如何用vba實現(xiàn)將ppt幻燈片中的圖片批量導(dǎo)出為獨立的圖片文件?
  • 如何用vba創(chuàng)建一個空白的zip壓縮文件?

總結(jié)

以上是生活随笔為你收集整理的如何用vba在word中快速移动或选中内容区域?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。