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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

轉自:http://www.exceloffice.net/archives/1598

在word中經常需要操作特定位置的文本內容,定位文本內容就顯得尤為重要。

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

在這些方法和屬性中,有兩類枚舉常量是經常要用到的,一類是移動、定位、選擇的單位常量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一個節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將當前的選擇區域的結尾擴展到指定單位的結尾Const wdExtend=1
wdMove0取消當前的選擇區域,

?

然后將光標移動到指定單位的結尾

Const wdMove=0
wdCollapseStart1取消當前的選擇區域,然后將光標定位到開頭Const wdCollapseStart=1
wdCollapseEnd0取消當前的選擇區域,然后將光標定位到結尾Const wdCollapseEnd=0

1.使用Collapse方法快速取消選擇內容區域,使光標不選中任何一個字符。

Visual Basic

Sub QQ1722187970() Const wdCollapseStart = 1 Const wdCollapseEnd = 0 With Word.Selection .Collapse (wdCollapseStart) '不帶參數默認是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)

????????'不帶參數默認是wdCollapseStart

????????.Collapse

????End With

End Sub

如果在word文檔中選中了某段文本內容區域,則運行上述代碼將取消選中文本內容區域,光標將定位在取消選擇前的文本內容區域的起始位置。如果把參數改為wdCollapseEnd,則定位在結束位置。

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

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

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方法使光標定位到指定單位內容的開頭和結尾。

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

上述代碼將返回光標所在的內容區域的那一行的開始位置和那一行的結束位置。

如果要從當前光標所在的位置開始擴展選擇的話,可以添加第二個參數,代碼如下:

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

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

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

4.使用Expand方法擴展當前的選擇區域

代碼如下:

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等方法不同的是,它會自動當當前選擇區域左右擴展到指定的單位區域內,比如當選中某個段落中的某些文本內容時,使用上述代碼將自動選中當前選擇區域所在的整段段落區域。

5.使用Shrink方法不斷地收縮選區

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

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

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

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

代碼如下:

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

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

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

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

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

Visual Basic

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

1

2

3

4

5

6

7

8

Sub QQ1722187970()

????'當前位置插入一個分節符

????Word.Selection.InsertBreak wdSectionBreakNextPage

????'繼續插入一個分節符

????Word.Selection.InsertBreak wdSectionBreakNextPage

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

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

End Sub

?

其它相關文章推薦:

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。