Local lnX,lnY,oFirst,olast,lnMaxTabIndex With this Dimension .pagetabs(.pageframe1.PageCount,2) For lnX = 1 to .pageframe1.PageCount oFirst = Null oLast = Null lnMinTabIndex = 10000 lnMaxTabIndex = 0 With .PageFrame1 For lnY = 1 To .Pages(lnX).ControlCount With .pages(lnX) If PemStatus(.Controls(lnY),"TabStop",5) *-- This is a tabable control If .Controls(lnY).Tabindex < lnMinTabIndex *-- this could be the first control lnMinTabIndex = .Controls(lnY).Tabindex oFirst = .Controls(lnY) Endif If .Controls(lnY).Tabindex > lnMaxTabIndex *-- this could be the last control lnMaxTabIndex = .Controls(lnY).Tabindex oLast = .Controls(lnY) EndIf EndIf endwith Next EndWith *-- store the first and last tabbable controls *-- in the array .pagetabs(lnX,1) = oFirst .pagetabs(lnX,2) = oLast Next .currentpage = -1 EndWithThis gives me an array of the first and last tabable controls on each page.