在Word裡用Ragne.Find 仍然可以傳回Range.Find找到的結果(Range),且判斷或設定其值

原來Word裡的Ragne.Find 仍然可以傳回找到Range.Find的結果Range,且判斷或設定其值
Sub 找字頭()
Dim f As New Find_Class1
f.找字頭 (Selection)
End Sub
Find_Class1 ClassModule(我此生的第一個物件類別模組。南無阿彌陀佛也要感謝老宅周阿中菩薩,諸位才有程式碼區塊可讀呢。這也是我第一個用上程式碼區塊的文章 感恩感恩 南無阿彌陀佛
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Find_Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Function 找字頭(wordTitle As String)
Dim findRange As Range
Dim iEnd As Long
Set findRange = ThisDocument.Range
Do
    With findRange.Find
        .Execute wordTitle, , , , , , , wdFindContinue
        If .Found Then
            If findRange.End - findRange.Paragraphs(1).Range.Characters.First.End < 11 Then
                findRange.Select
                If MsgBox("是否即是此字?", vbOKCancel + vbQuestion) = vbOK Then
                    Exit Function
                Else
                    If findRange.End = iEnd Then MsgBox "沒有找到哦!", vbExclamation: Exit Function
                    iEnd = findRange.End
                End If
            Else ''雖找到而不符合條件時,則若回到原來位置,表示已找過全文一遍了,即停止
                If findRange.End = iEnd Then MsgBox "沒有找到哦!", vbExclamation: Exit Function
                If iEnd = 0 Then iEnd = findRange.End
            End If
        Else
            MsgBox "沒有找到此字哦!", vbExclamation: Exit Function
        End If
    End With
Loop
End Function


觀念真的很重要,也因為自學C#Class有了一定的認識,才「順便」學會了一直以來視為畏區的VBA或VB的「物件類別模組」也終於會用了 ClassModule 難怪叫物件類別模組類別Class 本就與物件Object蛋生雞息息相關嘛。要不是專業「文言」能力不行,誰看得懂「物件類別」是啥米碗粿啊 ~~ 南無阿彌陀佛

留言

熱門文章