• ベストアンサー

マクロ シートの順番を認識してシートをアクティブに

シート名に反応して、シートをアクティブにするマクロは分かるのですが、 シートの順番を元に、アクティブにするマクロを実行したいです。 例えば、 1枚目のシートに あああ、2枚目のシートに いいい、3枚目のシートに ううう と名前を付けているブックがあるとして、あああ のシートをアクティブにしたいとき、 Sub あああ のシートをアクティブにする() Sheets("あああ").Activate End Sub としたいわけではなく、「1枚目だからアクティブにした」 といったマクロを実行したいと思っています。

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

  • ベストアンサー
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

ワークシートはインデックス番号が左のシートから順に割り振られます。 worksheets(1).activate シート名は関係なく一番左のシートがアクティブになります。 (3番目にあったシートを1番目に移動させればそのシートが1に変更されるという事です) 1番めのシート名の取得とかも可能です。 dim sn as string sn = worksheets(1).Name

tanpopopoketto5
質問者

お礼

早速の回答ありがとうございました。 簡単なことだったんですね。勉強になりました!

関連するQ&A

  • 開いているシートをチェックする

    いつもこちらでお世話になってます。 VBAで、ひとつのブックの開いているシートをチェックする方法を教えてください。 "sheet1" "sheet2"  "sheet3" と同じブックにあるとし、 "sheet1"を開いてマクロを実行したら、 「シート1です」とメッセージボックスを出し、"F4"を選択。 "sheet2"を開いてマクロを実行したら、 「シート2です」とメッセージボックスを出し、"G4"を選択。 "sheet3"を開いてマクロを実行したら、 何もしない。 というようなコードをどうすればいいいのでしょうか? 自分なりに試してみたのは、以下のようなものです。 ' Macro () If Sheets("sheet1").Activate Then MsgBox "シート1です"   Sheets("sheet1").range("f4").select End If If Sheets("sheet2").Activate Then MsgBox "シート2です" Sheets("sheet2").range("g4").select End If End Sub これだと、どのシートを開いていても、 "sheet1"が開いて、"シート1です" のメッセージが出て、OKを押すと、"F4"を選択し、そのまま "sheet2"が開いて、"シート2です" のメッセージが出て、OKを押すと、"G4"を選択してし、 "sheet2"が開いた状態になってしまいます。 今現在は、2つのマクロが別々にあります。 マクロのオプションでCtrl+半角キーを同じにしたい、と考えています。 マクロのオプションで同じ半角キーをすることはできるようなのですが、 そうすると、Private Sub Worksheet_Activateで "sheet1"が開いたときは"E4"を選択するようにしているので、デバックが出てしまいます。 どのようにすればいいのでしょうか?

  • Excelでシートをコピーする時に「シート名が長すぎます」と表示される

    環境 OS : Win2000 SP4 Office : Excel 2000 SP1 表題の通りでシート名「P.05-2_BK(-2)」を同じブック内でコピーしようとすると「シート名が長すぎます」とメッセージが出てコピーできません。 MSのサイトではシート名は半角31文字までOKと書いてあるのですが・・・ マクロでは大丈夫かな?と思い Sub Macro1() Sheets("P.05-2_BK(-2)").Select Sheets("P.05-2_BK(-2)").Copy After:=Sheets(24) End Sub と言うマクロを実行してみましたが、2行目で同じエラーが出ます。 また、ブックが悪いのかと思い、シートを新しいブックにコピーして、その新しいブック内でコピーしようとしても同様にエラーが出てコピーできません。 何故なんでしょう??

  • エクセルのブックを開いた時にマクロを自動定期に実行したいのですが。

    エクセル97でブックを開いたときに、自動的にマクロを実行させたいのですが、どのようにマクロを記述すればいいのか教えて頂けませんか。 sub autorun() sheets(2).select sheets(1).cells(2,2)=cells(5,5) end sub のように、シート2のある数値をシート1のセルに自動的に貼付したいのですが。 このマクロは自動的には実行されませんので、どうすれば自動的に実行するようにできるのかが知りたいのですが。 よろしくお願いします。

  • Excel VBAで他のブックを選択する方法を教えてください。

    こんにちは。VBA初心者です。 ブックを2つ開いた状態で、 マクロを保存してあるブック〔Book1〕から、 毎回ブック名が異なる[Book2]の選択されている2枚のシートを新しいブックに(仮Book3)コピーしたいのですが、どのように記述したらよいのでしょうか。(選択されるシートも毎回異なります。) 特に教えていただきたい部分は、 1.マクロが記録されているBOOK1以外のBookを操作する方法。 2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。 マクロの記録では下記の感じになります。 Sub Macro4() Windows.Arrange ArrangeStyle:=xlVertical Windows("Book2.xls").Activate Sheets(Array("Sheet3", "Sheet4")).Select Sheets("Sheet4").Activate Sheets(Array("Sheet3", "Sheet4")).Copy End Sub 宜しくお願い致します。

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • 複数のシートをまとめるとシートの順番がバラバラに。

    教えてください。初心者です。 1つ目。 http://okwave.jp/qa/q4225063.html を参考にさせていただき、複数のブック内のシートを別の1つのブックのSheet1にまとめて書き出しました。 実際は「振替伝票1月」「振替伝票2月」・・・・「振替伝票12月」と12個のブック内に 「現金」「備品」「雑費」などの共通のシートがあります。 12個のブックの「現金」をSheet1に書き出しをしたのですが、上から「振替伝票8月」の「現金」、「振替伝票5月」の「現金」・・・と順番がバラバラに書き出されます。 「振替伝票1月」「振替伝票2月」・・・・「振替伝票12月」と12個を順番に書き出すにはどうしたらよいでしょうか? 色々調べましたがわかりません。 「Dir関数が返すファイルの順番」の説明のサイトを見つけたのですが、さっぱりわかりませんでした。 Sub Sample1() Dim buf As String, i As Long Dim j buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls") Do While buf <> "" Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf Sheets("現金").Range("A1:J1000").Copy ThisWorkbook.Activate Range("A65536").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False buf = Dir() Loop End Sub 2つ目。 「現金」だけでなく「備品」「雑費」なども「現金」と同じブックの「Sheet2」「Sheet3」に書き出したいのですが、いろいろ調べてみるのですがわかりません。 ご教授の程、宜しくお願いいたします。

  • エクセルマクロ 教えてください

    エクセルの自動記録でマクロを取り組み始めたばかりの初心者です。 本部から毎月送られてくるエクセルファイルにこちらで別のワークブックに記録したマクロを使って加工しようとしていますが方法がわかりません。 他の人がこのファイルを間単に加工出来るようマクロを使って (マクロのコードの書き換え等の作業をしないで)行えるようにしようとしています。 ※送られれくるエクセルファイルは月毎にファイル名が違います(シート名は変わりません)。 下記は自動記録の内容ですがこれを適用させる方法であります。 宜しくお願いいたします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/9/8 ユーザー名 : ******* ' ' ActiveWindow.TabRatio = 0.819 Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")).Select Sheets("Sheet1").Activate With ActiveWindow .DisplayHeadings = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With Sheets(Array("Sheet6", "Sheet7", "Sheet1", "Sheet2")).Select Sheets("Sheet1").Activate ActiveWindow.Zoom = 120 End Sub

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

  • エクセル 複数シート検索のマクロ

    マクロ初心者です。 エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 よろしくご教示願います。

  • エクセルVBAで複数シートにマクロ実行

    エクセル2000です。 Sub 行列非表示() For i = 2 To 120 If Cells(i, "A").Interior.ColorIndex = 3 Then Cells(i, "A").EntireRow.Hidden = True End If Next i For n = 1 To 50 If Cells(1, n).Interior.ColorIndex = 3 Then Cells(1, n).EntireColumn.Hidden = True End If Next n End Sub 上記マクロを、シートAAAとCCCとEEEに実行する場合、 Sub test() Sheets("AAA").Activate Call 行列非表示 Sheets("CCC").Activate Call 行列非表示 Sheets("EEE").Activate Call 行列非表示 End Sub と書くよりももっとすっきり実行する方法は無いでしょうか? 各シートの非表示対象の行や列はそれぞれことなります。 また Sub 行列非表示 自体も、もっと効率的にやる方法はないでしょうか?

専門家に質問してみよう