在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蛋生雞息息相關嘛。要不是專業「文言」能力不行,誰看得懂「物件類別」是啥米碗粿啊 ~~ 南無阿彌陀佛
留言