在Word裡用Ragne.Find 仍然可以傳回Range.Find找到的結果(Range),且判斷或設定其值
原來Word裡的Ragne.Find 仍然可以傳回找到Range.Find的結果Range,且判斷或設定其值
Sub 找字頭() Dim f As New Find_Class1 f.找字頭 (Selection) End SubFind_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蛋生雞息息相關嘛。要不是專業「文言」能力不行,誰看得懂「物件類別」是啥米碗粿啊 ~~ 南無阿彌陀佛
留言