Monday, December 31, 2007


(See the full text with images at
Available in my UW.DOT library.

Tuesday, September 18, 2007

"edit undo" for a GUI form is a link to a ZIPped file you can download, inspect and adapt.
It represents a simple model for providing an Edit-Undo facility on GUI forms.

In my real-world situation we had a GUI form with several interlocking options; changing this and that meant that those were modified.

I decided to permit the user to reverse successive decisions back to a valid restart point.

Monday, August 20, 2007

New Releases

I have uploaded new versions of both and UX.xla on the downloads page

As well, both zip files contain an upgraded version of my which now farms out XLS to your XLStart folder and XLA to your Addins folder. Neat!

Tuesday, January 23, 2007


Word does not provide a frame-management facility. Frames were orphaned with the release of Word97.

Legacy documents and legacy habits continue to provoke problems with frames.

These procedures attempt to reduce the frustration associated with frames.

As a minimum, we wish that Word’s Edit-Replace dialogue provided an option to replace frames in the sense that we can replace section breaks and other non-text items.

We will provide ability to locate and select the next frame, to clear all frames, to count the frames in a document.

Replacement of a frame prompts us to ask what makes sense as a replacement?

The procedures supplied allow the developer to:

  1. Count frames within a range
  2. Select the first frame in a range (GoTo)
  3. Select the last frame in a range (GoTo)
  4. Move forward one frame
  5. Move backward one frame
  6. Delete all frames within a range (except those frames that lie within tables).

These procedures could form the basis of a GUI form similar to Word's Edit, Replace.

Public Function DeleteFrames(rng As Range)

Public Function lngCountFrames(rng As Range) As Long

Public Function SelectBackwardFrame(ByVal rng As Range)

Public Function SelectFirstFrame(rng As Range)

Public Function SelectForwardFrame(ByVal rng As Range)

Public Function SelectLastFrame(rng As Range)

Here is a crude attempt to circumvent the frame/table problem:

Public Function DeleteFrames(rng As Range)
Dim lng As Long
For lng = rng.Frames.Count To 1 Step -1
If rng.Frames(lng).Range.Information(wdWithInTable) Then
' MsgBox "I cannot delete frames within tables"
Selection.Rows.ConvertToText Separator:=wdSeparateByTabs, NestedTables:=True
Selection.ConvertToTable Separator:=wdSeparateByTabs, Format:=wdTableFormatNone
End If
Next lng
End Function
Sub TESTDeleteFrames()
Call DeleteFrames(Selection.Range)
End Sub

Tuesday, January 09, 2007

New release

I have uploaded
You can download it from my downloads page at

Wednesday, November 22, 2006

New release

I have uploaded
You can download it from my downloads page at

Friday, November 17, 2006

New release

I have uploaded
You can download it from my downloads page at