Word VBA: Code not working properly

Posted on 2008-10-16
Last Modified: 2013-12-27
Could someone please check my code and correct my mistakes for me please and tell me what i'm doing wrong. My code is meant to go through a word doc and go to bookmarks. For example when i click the first Bookmark button its meant to go to first bookmark and the bookmark should appear in the text box. The same should happen for To go to button, next, previous and last bookmark button. but as my textbox is not showing my bookmarks i don't know if my code is wrking properly or not. . please. I also have attached the exercise file to make sense of what is actually required by my code. Please check it and correct me in 3-4 fours time if you can.


Option Explicit

'current document, bookmark, bookmark position and count of bookmarks

Dim Doc As Document

Dim bkMrk As bookmark

Dim intPosition As Integer

Dim lngLast As Long

Private Sub userform_initalize()

'Initalise globals

intPosition = 1

Sets Doc = ActiveDocument

lngLast = ActiveDocument.Bookmarks.Count

'Hide and disable update buttons

Cancel.Visible = False

Update.Visible = False

Cancel.Enabled = False

Update.Enabled = False

'Common display form rtn


End Sub



Private Sub AddBkMrk_Click()

'Add bookmark

'Find the string

With Selection.Find

.ClearFormatting: .Text = InputBox("Enter the text")

.Forward = True: .Wrap = wdFindContinue: .Execute

End With

'calculate the line number where the string is found and place the cursor two lines further down

Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, _

Count:=Selection.Information(10) + 2, Name:=""

'add a bookmark named MyBookmark

ActiveDocument.Bookmarks.Add Name:="MyBookmark", Range:=Selection.Range

'Prepare textbox for input

TextBox1.Text = ""



End Sub


Private Sub FirstBkMrk_Click()

'Point to the first bookmark

intPosition = 1

Selection.GoTo What:=wdGoToBookmark, Which:=wdGoToNext, Name:="Bookmark2"

TextBox1.Text = ActiveDocument.Bookmarks("Bookmark2").Range


End Sub



Private Sub LastBkMrk_Click()

'Point to last bookmark

lngLast = ActiveDocument.Bookmarks.Count

intPosition = lngLast

Selection.GoTo What:=wdGoToBookmark, Which:=wdGoToLast, Name:="Bookmark5"

TextBox1.Text = ActiveDocument.Bookmarks("Bookmark5").Range


End Sub


Private Sub NextBkMrk_Click()

'Point to the next record and update

lngLast = ActiveDocument.Bookmarks.Count

If intPosition >= ActiveDocument.Bookmarks.Count Then

   intPosition = intPosition + 1

   intPosition = lngLast

End If


End Sub

Private Sub PreviousBkMrk_Click()

'Point to the Previous record and update


If intPosition > 1 Then

   intPosition = intPosition - 1


   intPosition = 1

End If

ShowHidden = False



End Sub

Private Sub DeleteBkMrk_Click()

  Dim rng As Range


Set rng = ActiveDocument.Bookmarks("incl1").Range

    rng.Collapse wdCollapseEnd 'just in case the bookmark isn't empty

    rng.End = ActiveDocument.Bookmarks("NotIncl1").Range.Start

    rng.Text = ""



End Sub



Private Sub GotoBkMrk_Click()

'Point to the selected bookmark

Selection.GoTo = InputBox("Enter bookmark: Name or Number")

If ActiveDocument.Bookmarks.Exists("Bookmark3") = True Then

   'Do something, i.e.,:


   End If

'Update the form

Update.Enabled = True


End Sub


Private Sub Cancel_Click()

'Cancel the Update

'Disable and hide the buttons and displasy the form

Cancel.Visible = False

Update.Visible = False

Cancel.Enabled = False

Update.Enabled = False

'Update the form

Update.Enabled = True

End Sub

Private Sub OK_Click()

'Apply the changes to bookmark

'Update the form

Update.Enabled = True

Unload UserForm1


End Sub

Private Sub UpdateForm()

ShowBookmarks = True

'Update current count and bookmark

lngLast = Doc.Bookmarks.Count

Set bmCurrent = ActiveDocument.Bookmarks(intPosition)

'Display the current Bookmark's position, Name and text

Label1.Caption = bmCurrent.Name

Label2.Caption = intPosition

TextBox1.Text = bmCurrent.Range.Text

FirstBkMrk.Enabled = True

PreviousBkMrk.Enabled = True

NextBkMrk.Enabled = True

LastMkMrk.Enabled = True


End Sub




Private Sub UserForm_Click()


End Sub

Open in new window

Question by:Anciena
LVL 14

Accepted Solution

rachitkohli earned 50 total points
ID: 23041357
I have done some changes in your macro, in First Bookmark, Last BookMark & GoTo bookmark..
You can refer the same, & am sure it should help you to extend it further the way you want..

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

This article describes how to use the Send to Mail Recipient command. The instructions apply generally to Office 2007 and later versions, but Microsoft® Word 2013 was used for the specific steps and figures.  What is Send to Mail Recipient? Send…
Article by: Leon
Software Metering within our group of companies has always been an afterthought until auditing of software and licensing became a pain point. Orchestrator and SCCM metering gave us the answer and it was an exciting process.
This video shows the viewer how to set up and create Footnotes in their document. Click on the References tab: Select "Insert Footnote": Type in desired text:
The viewer will learn how to make their project stand out over others by learning how to change colors and shapes, add spaces, change directions, and add bullets to their charts.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now