• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シート名でなくindex番号でシートの移動をしたい)

シート名でなくindex番号でシートの移動をしたい

このQ&Aのポイント
  • Windows7 Excel2007でマクロ作成の初心者です。シートの次ページへ、およびページの前に戻るコードを作成しましたが、文字列ではなくindex番号を使用して作りたいと思っています。
  • 現在のコードでは、シートの名前を直接指定していますが、シートの増減で名前が変わった場合に手動で名前を変更する必要があります。そのため、シートの移動をindex番号で行う方法を知りたいです。
  • 例えば、Worksheets(1)を次のシートに移動するときはWorksheets(1).Activateと書く必要がありますが、シートの増減時にシート名が変わっても自動的に移動できるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >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

aitaine
質問者

お礼

なるほどこうゆうことですが。おかげで名前を入力せずにすみました。ありがとうございました。

その他の回答 (2)

回答No.3

「次ページ、およびページの前」の定義がはっきりしていないところが問題だと思います。 次ページとは、アクティブなシートの直右のシート。 ページの前とは、アクティブなシートの直左のシート。 と、定義すると 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)
回答No.1

ActiveSheet.Index を利用してください。

関連するQ&A

専門家に質問してみよう