>' Begin form code >Option Explicit > >Private m_iPage As Integer ' This is an integer to indicate current page > >Private Sub SetFrames() > If Not SetFrame Then > SetFrame > End If >End Sub > >Private Function SetFrame() As Boolean > Dim FraFound As Boolean > Dim fra As Frame > > For Each fra In Me.Controls > On Error GoTo bAIL > If Val(fra.Tag) = m_iPage Then > fra.Move 15, 15 ' move is faster than .left etc. > FraFound = True > fra.Caption = "tag " & fra.Tag > Else > fra.Move ((-100) - (fra.Width)), 15 > End If > Next >bAIL: > > If Not FraFound Then > m_iPage = 1 ' We obviously went over or under > End If > SetFrame = FraFound ' Return > >End Function > >Private Sub cmdNext_Click() > m_iPage = m_iPage + 1 > SetFrames >End Sub > >Private Sub cmdPrevious_Click() > m_iPage = m_iPage - 1 > SetFrames >End Sub > >Private Sub Form_Load() > m_iPage = m_iPage + 1 > SetFrames >End Sub >'End form code. >>
Dim nFrame As Integer Private Sub cmdBack_Click() If nFrame > 0 Then nFrame = nFrame - 1 ChangeFrame End If End Sub Private Sub cmdNext_Click() If nFrame < fraWizard.Count - 1 Then nFrame = nFrame + 1 ChangeFrame End If End Sub Private Sub Form_Load() Dim nLoop As Integer ' Reposition all other frames to sit in same position as first For nLoop = 1 To fraWizard.Count - 1 fraWizard(nLoop).Left = fraWizard(0).Left fraWizard(nLoop).Top = fraWizard(0).Top Next ChangeFrame End Sub Private Sub ChangeFrame() Dim nLoop As Integer ' Change visibility of frames (set all invisible except current) For nLoop = 0 To fraWizard.Count - 1 fraWizard(nLoop).Visible = (nLoop = nFrame) Next cmdBack.Enabled = (nFrame > 0) cmdNext.Enabled = (nFrame < fraWizard.Count - 1) End SubWorks great - I will use this based on your suggestion.