پل سعی می کند از Word VBA برای برگرداندن شماره پاورقی پاورقی که نقطه درج در آن قرار دارد استفاده کند. در مورد او ممکن است پاورقی بیش از یک پاراگراف داشته باشد. پل تعجب می کند که آیا راهی برای تعیین این شماره پاورقی در VBA وجود دارد؟
تعیین شماره پاورقی با استفاده از ویژگی Index یک شیء پاورقی امکان پذیر است. در اینجا یک راه سریع برای نشان دادن چگونگی مفید بودن این اطلاعات وجود دارد:
Sub GetFootnoteNumber() Dim f As Footnote Dim sTemp As String sTemp = "The insertion point is not in a footnote" For Each f In ActiveDocument.Footnotes If Selection.InRange(f.Range) Then sTemp = "The insertion point is in footnote " & f.Index End If Next MsgBox sTemp End Sub
توجه داشته باشید که ماکرو از هر پاورقی در سند عبور می کند. اگر مشخص شود که انتخاب (نقطه درج) در یک پاورقی خاص است، از ویژگی Index آن پاورقی برای قرار دادن پیام در متغیر sTemp استفاده می شود. پس از انجام حلقه زدن در پاورقی ها، متغیر sTemp در یک جعبه پیام نمایش داده می شود.
اگر پاورقی های زیادی در سند خود دارید، ممکن است نخواهید همه آنها را حلقه بزنید. در آن صورت، میتوانید از ویژگی Information انتخاب برای تعیین اینکه آیا نقطه درج در حال حاضر در پاورقی است یا خیر، به این ترتیب استفاده کنید:
Sub GetFootnoteNum() Dim J As Integer Dim sTemp As String sTemp = "The insertion point is not in a footnote" If Selection.Information(wdInFootnote) Then J = Selection.Paragraphs(1).Range.Footnotes(1).Index sTemp = "The insertion point is in footnote " & J End If MsgBox sTemp End Sub
علاوه بر این، میتوانید اطلاعات دیگری درباره یک پاورقی خاص با گسترش ویژگیهای آن پاورقی که به آن دسترسی دارید به دست آورید. ماکرو زیر نه تنها شماره پاورقی، بلکه قانون شماره گذاری، سبک شماره گذاری و شماره شروع پاورقی ها را نیز برمی گرداند:
Sub GetFootnoteInfo() Dim f As Footnote Dim sTemp As String sTemp = "The insertion point is not in a footnote" If Selection.Information(wdInFootnote) Then Set f = Selection.Paragraphs(1).Range.Footnotes(1) sTemp = "Footnote number: " & f.Index & vbCr With f.Range.FootnoteOptions sTemp = sTemp & "Numbering Rule: " & .NumberingRule & vbCr & _ "Numbering Style: " & .NumberStyle & vbCr & _ "Starting Number: " & .StartingNumber End With End If MsgBox sTemp End Sub