エクセルのマクロで先頭文字が同一のシートを選択する方法

このQ&Aのポイント
  • エクセル2007で先頭文字が同一のシートを一括選択する方法を教えてください。
  • 70以上のシートがあり、先頭文字によって区分けされています。
  • マクロを利用して先頭に同じ文字がついているシートを選択し、印刷プレビュー画面まで表示したいです。
回答を見る
  • ベストアンサー

エクセルのマクロについて

Excel2007にて、複数のシート(約70シート)あり シート名を 「日本(1)」、「日本(2)」、「日本(3)」・・・、「東京(1)」、「東京(2)」、「東京(3)」・・・と 先頭文字によって区分しています。 マクロを利用し、ボタンひとつで 先頭に「日本(*)」とついているシートを全て選択し 印刷プレビュー画面まで表示したいです。 Sheets(Array("日本(1)", "日本 (2)", "日本 (3)")).Select とすると良いのはわかりますが、シート数が固定していないので シートの先頭文字が同一のシートを全て選択したいのですが なかなか前に進みません。 困っています。教えていただきたいです。

  • chau
  • お礼率40% (30/75)

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 For i = 1 To Sheets.Count If Sheets(i).Name Like "日本*" Then Sheets(i).Select False End If Next

chau
質問者

お礼

回答ありがとうございますm(__)m お陰さまで、無事理想とする内容ができました。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

For Eachでシート名を確認して、該当するシート名を配列にいれ、その配列をセレクトする方法はいかがでしょう。 Sub sample()   Dim ws As Worksheet   Dim vName() As Variant   Dim i As Integer      For Each ws In ThisWorkbook.Worksheets     If ws.Name Like "日本(*)" Then       ReDim Preserve vName(i)       vName(i) = ws.Name       i = i + 1     End If   Next   If i = 0 Then     MsgBox ("該当シート無し")     Exit Sub   End If      Sheets(vName).Select   ActiveWindow.SelectedSheets.PrintPreview End Sub カッコの全角、半角も厳密に区別しますのでご注意を

chau
質問者

お礼

ご回答ありがとうございます。 無事解決できました。 該当シートなしの項目までありがとうございます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

ごめんなさい。シート名は次のように訂正してください。 Sheets("日本(" & i & ")").Select

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようにしてFor ・・・Next の間で印刷プレビューを入れるようにすればよいでしょう。 For i = 1 To 3 Sheets("Sheet" & i).Select 印刷プレビューの操作 Next

chau
質問者

お礼

回答ありがとうございます。 皆様のおかげで、解決いたしました。

関連するQ&A

  • エクセルのマクロでシートの選択について

    よろしくお願いします WinXP SP3でEXCEL 2003を使用しています ブック名がtest.xls シートが("目次", "1", "2", "3", "4", "5") とあります ここでは仮に"5"までシートがありますが本来は変数であり、n + 1のように扱いたいです 以下のマクロで"目次"以外の全てのシートを選択しました ~~~~~ Sub Macro1() Dim i As Integer i = 2 Sheets(i).Select For i = i To 6 Sheets(i).Select False Next i End Sub ~~~~~ このマクロですとArrayを使わずとも、"目次"以外のシートを選択できますが For i = i To 6 の6を7以上にするとエラー終了します そこで以下の条件にてシートの選択を行いたいのですが方法がわからず困っております 1・シートの数が多くても"目次"以外のシートを全て選択したいです 2・iがシートの数を超えた場合はエラー終了せず、マクロを終了させたいです 3・Sheets(Array( "1", "2", "3", "4", "5")).Select のようなマクロは組みたくないです 大変恐縮ですが、教えていただけますでしょうか できればマクロをVBEにコピー&ペーストするだけで実行できるような 状態にしていただきますと非常に幸いです 何卒、よろしくお願いいたします

  • エクセル2000のマクロについて再び

    新しいブックを作りさらに他のブックで作成されているシートをコピーして移動するというマクロを作ります。この時、新しく作ったブックの名前がBook1にならないとその時点でマクロのエラーになりなってしまいますが、たまにBook2になってしまうときがあります。必ずBook1になると指定することはできないのでしょうか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select Sheets(Array("sheet1", "sheet2", "sheet3")).Copy →新しいシートを作成 Workbooks.Open Filename:="C:xxx\○○\△△.xls" Sheets.Copy after:=Workbooks("book1").Sheets(2) →ここで、Book1が存在しないとエラーになってしまう。 お願いします。

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

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

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

    エクセルの自動記録でマクロを取り組み始めたばかりの初心者です。 本部から毎月送られてくるエクセルファイルにこちらで別のワークブックに記録したマクロを使って加工しようとしていますが方法がわかりません。 他の人がこのファイルを間単に加工出来るようマクロを使って (マクロのコードの書き換え等の作業をしないで)行えるようにしようとしています。 ※送られれくるエクセルファイルは月毎にファイル名が違います(シート名は変わりません)。 下記は自動記録の内容ですがこれを適用させる方法であります。 宜しくお願いいたします。 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 2000のマクロで質問

    ECXEL 2000のマクロで分からない点があるので 教えてください。 下記のマクロを実行して、シートSheet2,Sheet3を削除したいのですが 実行すると、"選択したシートを削除します。一度削除すると元に戻すことは 出来ません OK キャンセル"とのダイアログが出てきてしまいます。 このダイアログを表示させずに削除を実行させるにはどうすればいいのでしょうか。 ヘルプを参照して調べましたがどうも分かりません。 詳しい方、アドバイスをお願いします。 Sheets(Array("Sheet2", "Sheet3")).Select ActiveWindow.SelectedSheets.Delete

  • エクセル マクロの記憶で記憶する自動マクロの編集

    こんにちわ。 エクセルで、マクロを記憶させて実行しています。 この自動で操作をしてくれるマクロを、50回繰り返したいのですが、 マクロの編集で文字を出して、この文字に何かを付け足すことで 50回繰り返すことはできますでしょうか? 以下、文字を出した画面です。(適当な操作を記憶させただけです) Sub あき() ' ' あき Macro ' マクロ記録日 : 2011/8/20 ユーザー名 : user ' ' Range("A1").Select Selection.ClearContents Sheets("RESULT_B(1)").Select Selection.AutoFilter Field:=1, Criteria1:="=", Operator:=xlAnd Range("A3").Select Sheets("Sheet1").Select Range("C1").Select Selection.Cut Sheets("RESULT_B(1)").Select Range("A3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("D1").Select Selection.Cut Sheets("RESULT_B(1)").Select Range("H3").Select ActiveSheet.Paste Sheets("Sheet1").Select End Sub このすべての作業を繰り返したいのですが、 お手数ですが、ご存知の方、 どこにどういう言葉を入力したらよいのか教えて頂けませんでしょうか。 当方素人の為、訳の分からない文章になってしまい 申し訳ありません。 よろしくお願い致します。

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

    以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。

  • エクセルのマクロ:連続動作を空白行で終了する方法

    XP・Excel2003使用のマクロ素人です。 エクセルのマクロを使って以下のマクロを作りました。 1.Sheet1の1行目に入っているデータをSheet2にコピー 2.Sheet2をコピー 3.Sheet1の1行目を削除 4.上記1~3のマクロを実行するボタンをクリック 作業を繰り返し行いたかったので、(4)の「マクロボタンをクリック」という作業もマクロに組み込んでみたのですが、空白行でも延々に実行されてしまいます。 【Sheet1に入っているデータが空白になったら作業を止める】というマクロはどのように書けばいいのでしょうか? マクロの作り方が根本的に間違っていましたら、あわせてご指摘下さい。 宜しくお願い致します。 Range("A1").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste Sheets("Sheet2").Select Application.CutCopyMode = False Sheets("Sheet2").Copy After:=Sheets(3) Sheets("Sheet1").Select Rows("1:1").Select Selection.Delete Shift:=xlUp Range("A1").Select Sheets("Sheet1").Select Application.Run "Book1!Macro1"

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • エクセルマクロ構文で初歩的な質問ですが・・・

    いつもお世話になっています。 マクロ構文で初歩的な質問なんですが Sheet1 がアクティブになっている状態で Sheet2 の セルC9 を選択する場合 Sheets("Sheet2").Range("C9").Select この様にマクロを記述したらエラーになります。 Sheets("Sheet2").Select Range("C9").Select 2行に分けて、書けばうまく動作するのですが 最初の構文は何故エラーになるのでしょう どなたか、分りやすく説明して頂けませんでしょうか

専門家に質問してみよう