- ベストアンサー
シート名でなくindex番号でシートの移動をしたい
- Windows7 Excel2007でマクロ作成の初心者です。シートの次ページへ、およびページの前に戻るコードを作成しましたが、文字列ではなくindex番号を使用して作りたいと思っています。
- 現在のコードでは、シートの名前を直接指定していますが、シートの増減で名前が変わった場合に手動で名前を変更する必要があります。そのため、シートの移動をindex番号で行う方法を知りたいです。
- 例えば、Worksheets(1)を次のシートに移動するときはWorksheets(1).Activateと書く必要がありますが、シートの増減時にシート名が変わっても自動的に移動できるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >indexを使ってつくりたのでですが こういうことでしょうか? これも、ひとつのロジックかもしませんね。 注意点としては、Worksheet ではなくて、Sheet ということですね。 なお、この場合は、Selectでも、Activate でもよいですが同じですが、若干、Select メソッドが良いのではないかと思います。 '------------------------------------------- Private Sub AdvancePage_Click() '前に進む Dim t As Integer, i As Integer, j As Integer t = Sheets.Count i = ActiveSheet.Index j = i Mod t + 1 Sheets(j).Select End Sub '------------------------------------------- Private Sub BackwordPage_Click() '後ろに下がる Dim t As Integer, i As Integer, j As Integer t = Sheets.Count i = ActiveSheet.Index j = (i + t - 2) Mod t + 1 Sheets(j).Select End Sub
その他の回答 (2)
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
「次ページ、およびページの前」の定義がはっきりしていないところが問題だと思います。 次ページとは、アクティブなシートの直右のシート。 ページの前とは、アクティブなシートの直左のシート。 と、定義すると If ActiveSheet.Name <> "23.日本太郎" Then Sheets(ActiveSheet.Index+1).Select End If If ActiveSheet.Name <> "1.日本花子" Then Sheets(ActiveSheet.Index-1).Select End If 但し、アクティブなシートの直右又は、直左にシートが存在することを確認する構文がないとエラーが発生する可能性が残ります。
- kmetu
- ベストアンサー率41% (562/1346)
ActiveSheet.Index を利用してください。
お礼
なるほどこうゆうことですが。おかげで名前を入力せずにすみました。ありがとうございました。