• ベストアンサー

シートの移動ボタン(エクセルVBA)

表示するSheetを変えるボタンを作っています。宜しくお願いします。 ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。 「WorkSheets("Sheet6").Activate」でしています。 で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るようにしたいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る) 更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。 ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シートに書いて処理させています。ここから戻るボタンの方法もお願いします。 宜しくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

Public fukkiSheetNo As Integer '復帰するシート番号 を標準モジュールに書いていませんか? 以前の終了ボタンと同じで、ThisWorkbookのコードウインドウに貼り付けます。2つのブックの開き方も終了ボタンの時と同じです。終了ボタンがうまくいっていればこれも同じ理屈ですが・・・

rurucom
質問者

お礼

すみませんでした!ファイル名をタイプしていました。本当にすみません!お恥かしい次第です。 ばっっっっりちOKです。 ありがとうございました。

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

移動Book1.xls(シート1~7)、移動Book2.xls で書きました。ファイル名は変更してください。 'シート1~5、7にはボタン2個。各シートのコードウインドウに貼り付けます。 Private Sub cmdJump6_Click() 'シート6に行くボタン Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) Worksheets("Sheet6").Activate End Sub Private Sub cmdJumpBook2_Click() 'ブック2に行くボタン Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) Workbooks("移動Book2.xls").Worksheets("Sheet1").Activate End Sub 'シート6はボタン1個。シートのコードウインドウに貼り付けます。 Private Sub cmdFukki_Click() '元のシートに復帰するボタン Dim jmpNo As Integer '復帰するシート番号 jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo Worksheets("Sheet" & jmpNo).Activate End Sub 'ThisWorkbookのコードウインドウに貼り付けます。これをBook2から参照する。 Public fukkiSheetNo As Integer '復帰するシート番号 'ブック2のシート1のコードウインドウに貼り付けます。 Private Sub cmdJumpBook1_Click() Dim jmpNo As Integer '復帰するシート番号 jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo Workbooks("移動Book1.xls").Worksheets("Sheet" & jmpNo).Activate End Sub

rurucom
質問者

補足

ありがとうございます。 早速試してみましたが、    Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) でのところで止まります。   ”オブジェクトは、このプロパティまたはメソッドをサポートしていません。” と出ます。なぜでしょう???????? ファイル名は、自分のものに変えました。よろしくお願いします。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.3

>ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。 >「WorkSheets("Sheet6").Activate」でしています。 >で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るように >したいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る) 考え方だけ説明の為に書きましたので、きたない書き方になってます。 ■Sheet1(シート6に移動する) Private Sub CommandButton1_Click() Sheets("Sheet6").Select Sheets("Sheet6").Cells(1, 1).Value = "Sheet1" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔                              になるので、邪魔にならない場所に書く End Sub ■Sheet2(シート6に移動する) Private Sub CommandButton1_Click() Sheets("Sheet6").Select Sheets("Sheet6").Cells(1, 1).Value = "Sheet2" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔                              になるので、邪魔にならない場所に書く End Sub ■Sheet3~5も同様 ■Sheet6 (呼ばれたシートに戻る所) Private Sub CommandButton1_Click() Sheets(Cells(1, 1).Value).Select End Sub >更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。 >ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シート >に書いて処理させています。ここから戻るボタンの方法もお願いします。 上記と同じ考え方で、ファイル名のセルを追加します。 試しに、確認用のマクロを書いて見たら1回目はうまく動きましたが、2回目以降は、既に開いているEXCELシート をまた、開きに行くので確認メッセージが出てしまいました。(出さない為の指定方法とか有るかもしれないが調べていません、分からないようでした質問してください。その時調べます。) この問題は、別問題なので取りあえず参考にして下さい。

rurucom
質問者

補足

ありがとうございます。うまくいきました。 >2回目以降は、既に開いているEXCELシートをまた、開きに行くので確認メッセージが出てしまいました。 については、もう少しじっくり考えてみます。

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.2

こんにちは  以下のページがご参考になるのでは? 【エクセル技道場】-ツールバー-マクロでツールバー作成 http://www2.odn.ne.jp/excel/waza/toolbar.html#SEC18

参考URL:
http://www2.odn.ne.jp/excel/waza/toolbar.html#SEC18
  • gould09
  • ベストアンサー率33% (196/589)
回答No.1

移動先のシートの見えないセルに、どこから呼ばれたか書いておいたらどうでしょうか?(WorkBook名とシート名)

rurucom
質問者

補足

すみません!まだまだ初心者なので、どこからどうしたら呼ばれたかを書く方法が分かりません。よろしかったら、詳しくお願いできませんか?

関連するQ&A

  • excelマクロボタンのリンク先の表示方法

    よろしくお願いします。 excel2010にてマクロボタンを設定し、特定のsheetに飛ぶよう設定しました。 ●そのボタンにマウスポインタを持って行った際にリンク先が表示されるように  することは可能でしょうか? ●このボタンをクリックしたらどこへ飛ぶか、というのがわかるようにしたいの  ですが、良い方法がありましたら教えてください。 お願いいたします。 Sub マクロ名() Workbooks.Open ThisWorkbook.Path & "\ファイル名.xls" Worksheets("シート名").Activate End Sub

  • Excelマクロ(VBA)のブックとシートのコピーについて

    初めまして、宜しければVBAのブックやシートのコピー(操作)についてご教授お願いいたします。 Windows XP x64 OFFICE2003 を使用しております。 D:\Book1.elxのsheet1のシートをD:\test\Book2.elxのsheet1のシートに コピーする方法が恥ずかしながら理解できておりません。 以下が行いたい事です。 Sub ボタン1_Click() 'text1ブックを開く 'Workbooks.Open "D:\micro\test1.xls" 'ブック間のシートをコピー Workbooks("test2.xls").Worksheets("シート2").Copy _ After:=Workbooks("test1.xls").Worksheets("Sheet2") End Sub VBのファイル操作とは違い、どのように行えば良いのか検索しても同じような部分サンプルのようなものしか無く、理解できておりません。 参考でも結構ですのでご教授いただけませんでしょうか? よろしくお願いいたします。

  • WorkbooksとWorksheetsを簡単にActivateする方法

    お世話になります。よろしくお願いいたします。 Excel 2003で複数のワークブック、ワークシートを以下の方法以外に簡素にActivateする方法ありませんでしょうか? Workbooks("ほげ.xls").Activate Worksheets("ほげほげ").Activate 複数の違うワークブック、ワークシートを何度も処理の途中でActivateする為、Workbooksと、Worksheetsを変数に格納し、変数.Activateのような事ができないかと考えているですが、方法がわかりません。 よろしくお願いいたします。

  • エクセル VBA シート名を別シートにコピー

    早速の質問ですが エクセルVBAで シート名を別シートにコピーなのですが 10個のシートを順にシート名をコピー&ペーストしたいのです。 Dim aworkbook As Workbook Dim bworkbook As Workbook Set bworkbook = ActiveWorkbook Workbooks.Add Set aworkbook = ActiveWorkbook for i=1 to 10 bworkbook.Activate Worksheets(i).Select Application.CutCopyMode = False aworkbook.Activate Worksheets(i).Select ここに入る文章がわかりません Range("A1").Select next と以上な感じで作ってみたのですが どう貼り付けして良いかわからない状況です nextでまわす以上変数でなければだめなんでしょうけれども 構文が思いつきません。 皆様よろしくお願いいたします。

  • Excel vba selectが効かない

    2と3の2つのエクセルファイルがあります。縦の列を新しいファイルの横の行に コピーしていきたいプログラムです。 2のファイルの1シート目の"C8:C25" 3のファイルの1シート目の"C9:C65" を新しい1のファイルの1シート目の1行目にコピーするプログラムを 作っていますが1シート目はpasteされるのですが 3のファイル2シート目からselectの指定が"C9:C65"ではなく、B9からQ65の指定になってしまい思ったコピーができません(★のところ)、1シート目はうまくいっているのでどうして3のファイルの2シート目のからうまくいかないかわかりません。 5シートまででテストをしているのですが実際は各々255シートありもってくる列も 12列あります。とりあえずCの列だけ5シートで試してみています。 Dim i As Long Dim N As Long i = 1 N = 1 Do While i <= 5 ''C列''' Workbooks(2).Worksheets(i).Activate   '2のファイル Worksheets(i).Range("C8:C25").Select   'もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("C" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True Workbooks(3).Worksheets(i).Activate   '3のファイル Workbooks(3).Worksheets(i).Range("C9:C65").Select  '★もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("U" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True i=i+1 N=N+1 LOOP

  • Office2010のVBAファイル自動オープン

    VBAの自動オープンで対象ファイルの開き方によって VBAが正常に動かないので質問させt下さい。 ネットワーク上のサーバーである AD-1から開くのとネットワークドライブPから開くのとでは Excelの名前の管理機能が動作しません。 Private Sub Workbook_Open() Workbooks.Open Filename:= _ "\\ad1\共通\aaaa.xlsx" Worksheets("Sheet1").Activate と Private Sub Workbook_Open() Workbooks.Open Filename:= _ "P:\共通\aaaa.xlsx" Worksheets("Sheet1").Activate 両方とも稼働させる方法はあるのでしょうか? よろしくお願いします。 End Sub

  • VBA-Workbook_Open()イベントで

    再度、お世話になります。 手順1.book1よりボタンをクリックしてbook2を開く 手順2.あるフォルダの.xlsファイル名をボタン名に貼り付ける 手順3.book2の戻るボタンでbook2を閉じ、book1を開く 手順4.手順1を実行する という流れを行ったところ1回目のbook2の表示の際にはうまくファイル名を表示できるのですが、戻った後の2回目のbook2の表示ではファイル名が1回目のときのままになってしまいます。 一部 [book2での処理] ***Module1*** Public strPath as String ***ThisWorkbook*** Public Sub Workbook_Open() strPath = "C:\" & Worksheets("Sheet1").Range("A1") myName = Dir(strPath & "\*.xls", vbDirectory) If myName <> "" Then FCnt = FCnt + 1 Worksheets("Sheet1").OLEObjects("btn" & FCnt).Object.Caption = myName Do ・・・(略) Loop End If End Sub ***Sheet1*** Private Sub btnBack_Click() Workbooks.Open Filename:="C:\book1.xls" Workbooks("book2.xls").Close saveChanges:=False End Sub のようにしています。 お手数をおかけしますが、どなたかご教授お願いいたします。

  • コピー後に値のみ貼り付け エクセル、VBAの記述について

    マクロ初心者です。 エクセルで選択範囲を指定後コピーし、 自動的に別のシートの末尾に貼り付けられるようにしたのですが、 この内容のまま「貼り付け」を「値のみ貼り付け」に訂正する場合 どのように変更すればいいのか、教えてくださると嬉しいです。 宜しくお願いいたします。 Sub 選択範囲をコピー後、指定シートの末尾に貼り付け Worksheets("sheet1").Activate Range("b11:I17").Copy Workbooks("book2.xls").Worksheets("Sheet1").Activate 行 = Range("B1").CurrentRegion.Rows.Count + 1 ActiveSheet.Paste _ Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行) End Sub

  • エクセルVBAで埋め込みグラフ(ChartObjects)のアクティブ

    エクセルVBAで埋め込みグラフ(ChartObjects)のアクティブ化のエラー(1004)解消方法について。 予めWorkbook1のシートに6つの埋め込みグラフを用意してあります。 Workbook2のシート1に数値データがあり、シート2に先のWorkbook1のシートを コピペして、数値の参照先をWorkbook2のシート1に変更して利用したいと考えております。 以下の処理を用いて、グラフ内の文字サイズが変わってしまうので、文字サイズを再設定しなおそうと、 埋め込みグラフを1つずつ選択し、文字サイズ設定を行おうとしているのですが、 chart 3を選択したところで、chartobjectクラスのactivateメソッドが失敗 (エラー 1004) が出てしまいます。 ちなみに、Workbook1のシート上で、以下の処理を行ってもエラーは出ません。 Workbook2にコピペしたものに対して、chart 1、chart 2の処理が済み、 chart 3になった所でエラーが発生します。 解決方法のご教授をよろしくお願い致します。 grp_cnt = ActiveSheet.ChartObjects.Count For j = 1 To grp_cnt Workbooks(2).Worksheets(2).Activate 'シート上のチャート中より、指定した名前のチャートを探す。 Set obj = ThisWorkbook.ActiveSheet.ChartObjects(j) crt_name = ThisWorkbook.ActiveSheet.ChartObjects(j).Name '変更したいチャートをアクティブにする。 ActiveSheet.ChartObjects(crt_name).Activate ActiveChart.ChartArea.Select Selection.AutoScaleFont = True With Selection.Font .Size = 10 End With Next j

  • Excel VBAを使って、Excelデータを別のExcelファイルに取り込みします

    報告書にexcel VBAを使って、(報告書を開いたまま)報告書のデータを別のexcelファイル(一覧)に取り込みします。 Sub k() Dim ブック As Workbook Set ブック = Workbooks.Open("c:\テスト\" & "一覧.xls") ブック.Worksheets("Sheet1").Cells(3, 2) = Worksheets("企業情報シート").Cells(3, 3) End Sub 報告書の"Worksheets("企業情報シート").Cells(3, 3)"は書き方がおかしいみたいで、正しい書き方を教えてください。

専門家に質問してみよう