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

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many companies are making the switch from Microsoft to Google Apps ( Use this article to learn more about what Google Apps has to offer and to help if you’re planning on migrating to Google Apps. It is …
Using Word 2013, I was experiencing some incredible lag when typing.  Here's what worked for me....
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.
This video shows where to find the word count, how to display it, and what it breaks down to in Microsoft Word.

932 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

11 Experts available now in Live!

Get 1:1 Help Now