Move to next or previous unhidden sheet

gacicd

New Member
Joined
Nov 30, 2012
Messages
30
<o:p>I have found these two codes for moving tothe next/previous visible sheets. <o:p></o:p>
<o:p></o:p>
Code:
[FONT=Calibri]<o:p></o:p>[/FONT]
[FONT=Calibri][FONT=Calibri]SubNextSheet()<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Set Sh = ActiveSheet<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error Resume Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Do While Sh.Next.Visible <>xlSheetVisible<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        If Err <> 0 Then Exit Do<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Set Sh = Sh.Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Loop<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Sh.Next.Activate<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error GoTo 0<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]EndSub<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri]<o:p></o:p>[/FONT]
[FONT=Calibri][FONT=Calibri]SubPrevSheet()<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Set Sh = ActiveSheet<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error Resume Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Do While Sh.Previous.Visible <>xlSheetVisible<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        If Err <> 0 Then Exit Do<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Set Sh = Sh.Previous<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Loop<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Sh.Previous.Activate<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error GoTo 0<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]EndSub<o:p></o:p>[/FONT][/FONT]
<o:p> </o:p>
I have a workbook with 50 works sheets(some sheets are hidden). I created two command buttons on each sheet(“<back” “Next="" and="">”) and connected them with relevant codes. It allworks well. <o:p></o:p></back”>
<o:p> </o:p>
The only issue I have is that when moving fromone sheet (say Sheet2) to the next sheet (say Sheet3) I end up in the lastactive cell in the destination sheet. For example, if the last active cell inSheet3 was “A23” I will end up in that cell when pressing “Next>” button inSheet2 or “<back” <o:p="" Sheet4.="" in="" button=""></back”>
</o:p>

<o:p> </o:p>
Can anyone assist me to modify these codesso that when moves are made (either to the next or previous unhidden sheet) Ialways end up in a same destination in each worksheet sheet (say cell “A1”). <o:p></o:p>
<o:p> </o:p>
Many thanks in advance<o:p></o:p>
<o:p> </o:p>
 
Code:
[COLOR=#574123][FONT=Tahoma]<o:p>[FONT=Times New Roman][SIZE=3][COLOR=#000000][FONT=Calibri]<o:p></o:p>[/FONT][FONT=Calibri][FONT=Calibri]SubNextSheet()<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Set Sh = ActiveSheet<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error Resume Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Do While Sh.Next.Visible <>xlSheetVisible<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        If Err <> 0 Then Exit Do<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Set Sh = Sh.Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Loop<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Sh.Next.Activate
      [/FONT][/FONT][/COLOR][/SIZE][/FONT]</o:p>[/FONT][/COLOR][COLOR=#ff0000][FONT=Tahoma]<o:p>[FONT=Times New Roman][SIZE=3][FONT=Calibri][FONT=Calibri]range("A1").select[/FONT][/FONT][/SIZE][/FONT]</o:p>[/FONT][/COLOR][FONT=Tahoma]<o:p></o:p>[/FONT][COLOR=#574123][FONT=Tahoma]<o:p>[FONT=Times New Roman][SIZE=3][COLOR=#000000][FONT=Calibri][FONT=Calibri]<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error GoTo 0<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]EndSub<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri]<o:p></o:p>[/FONT]
[FONT=Calibri][FONT=Calibri]SubPrevSheet()<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Set Sh = ActiveSheet<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    On Error Resume Next<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Do While Sh.Previous.Visible <>xlSheetVisible<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        If Err <> 0 Then Exit Do<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Set Sh = Sh.Previous<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]    Loop<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]        Sh.Previous.Activate
       [/FONT][/FONT][/COLOR][/SIZE][/FONT]</o:p>[/FONT][/COLOR][COLOR=#ff0000][FONT=Tahoma][FONT=Times New Roman][SIZE=3][FONT=Calibri][FONT=Calibri] range("A1").select[/FONT][/FONT][/SIZE][/FONT][/FONT][/COLOR][FONT=Tahoma]<o:p>[FONT=Times New Roman][SIZE=3][FONT=Calibri][FONT=Calibri]<o:p></o:p>[/FONT][/FONT][/SIZE][/FONT]</o:p>[/FONT][COLOR=#574123][FONT=Tahoma]<o:p>[FONT=Times New Roman][SIZE=3][COLOR=#000000]
[FONT=Calibri][FONT=Calibri]    On Error GoTo 0<o:p></o:p>[/FONT][/FONT]
[FONT=Calibri][FONT=Calibri]EndSub<o:p></o:p>[/FONT][/FONT][/COLOR][/SIZE][/FONT]</o:p>[/FONT][/COLOR]
 
Last edited:
Upvote 0
Another way:

Code:
Sub NextSheet()
    Dim i As Long

    
    For i = ActiveSheet.Index + 1 To Sheets.Count
        If Not Sheets(i) Is Chart And _
           Sheets(i).Visible = xlSheetVisible Then
            Application.Goto Sheets(i).Range("A1")
            Exit For
        End If
    Next i
End Sub

Sub PrevSheet()
    Dim i As Long

    
    For i = ActiveSheet.Index - 1 To 1
        If Not Sheets(i) Is Chart And _
           Sheets(i).Visible = xlSheetVisible Then
            Application.Goto Sheets(i).Range("A1")
            Exit For
        End If
    Next i
End Sub
 
Last edited:
Upvote 0
This line

For i = ActiveSheet.Index - 1 To 1

should be

For i = ActiveSheet.Index - 1 To 1 Step -1
 
Upvote 0

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top