• ベストアンサー

excelVBAで全てのsheetで同じ範囲を表示

エクセルVBAにて、3つのsheet全てで同じ範囲を表示させるには どう書けば良いのでしょうか? 例えば、ハイパーリンク機能を使ってA100:A150を選択させれば 開いたシート上にA100:*150辺りを表示できますが、マクロでは 選択はされるものの希望に合う表示が成されません(記録マクロ試行) これが可能ならば3つのsheet全てで同じ範囲を表示させたいのです。 (各シートを選択すれば同じ位置が表示されている) お手数おかけしますが、よろしくご教示下さい。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

エクセルでは,開いていないシートの「表示範囲」を操作出来ません。 その裏返しとして,どうしても次のような細工が必要になります。 前回回答のマクロを消去し,ふつーに標準モジュールに: sub macro1()  dim s0 as worksheet  dim s as worksheet  set s0 = activesheet ’application.screenupdating = false  for each s in worksheets   application.goto s.range("A100"), true  next ’application.screenupdating = true  s0.activate end sub

OKBob
質問者

お礼

何度も回答ありがとうございます。 待ってました!の回答でした。 しかし、読んで理解はできても自分では書けませんので 今後の教材としても使わせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

若しくは合わせ技で,ThisWorkbookシートに下記2つを記載します。 private sub workbook_Open()  application.goto activesheet.range("A100"), true end sub Private Sub Workbook_SheetActivate(ByVal Sh As Object)  application.goto sh.range("A100"), true End Sub

OKBob
質問者

お礼

初心者の私で遊んでいませんか?(笑 これもまたスゴいです! 自己作成ではありませんが、この面白さが次に繋がると思います。 こちらは理解できませんが、今後の参考にさせて頂きます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

たとえばブックのThisWorkbookシートに,下記をコピー貼り付けてみます。 Dim preS As Worksheet Private Sub Workbook_SheetActivate(ByVal Sh As Object)  Dim s As String  On Error Resume Next  Application.EnableEvents = False  Application.ScreenUpdating = False  preS.Activate  s = ActiveWindow.VisibleRange.Cells(1).Address  Application.Goto Sh.Range(s), True  Application.ScreenUpdating = True  Application.EnableEvents = True End Sub Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)  Set preS = Sh End Sub

OKBob
質問者

お礼

初め、読んでも実行しても意味が解りませんでしたが、、、 なんだか思わず笑ってしまう程の魔法にかけられたような物スゴい 機能で初心者の私には宝物的構文ですが、雲泥レベルで置き去り にされた感が。。。 でもこれはこれで有り難く頂戴いたします。 贅沢ですがもう少し優しい(簡単な)方法はないでしょうか?(汗 実行すれば、各シートで同じ指定範囲が表示(固定)できていば それだけでいいのです。 もしかして書き方が悪かったでしょうか? ス、スミマセン。 理解して次へ進みたいのでもう少し放置してみます。 「おまえにはまだ早い」かも知れませんので明日には閉じます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルシートの表示、非表示について

    複数シートのあるブックを開いた際、常時はsheet1だけを表示して残りのシートについてはsheet1に貼り付けた各コマンドボタンで各シートが表示されるようエクセルマクロを使って作ってみたのですが、コマンドボタンではなくハイパーリンクを使ってできないものかと悩んでいます。単純に全シートが表示された状態ならハイパーリンクで何の問題もないのですが、ハイパーリンクをクリックしたときに該当のシートが表示され、sheet1に戻ると他のシートは非表示にしておきたいのですが、なにかいい方法はないでしょうか? VBAも最近使い始めまだまだ、素人故稚拙な質問の仕方で申し訳ないのですが、どなたかお力添えください。よろしくお願いします。

  • vbaで全てのシートを選択状態にしたい 印刷

    マクロの記録で、全てのシートを選択すると、 Sheets(Array("シート1", "シート2")).Select というのが取得できるのですが、 このコードはシート名が増えたり、シート名が変更されると、使えなくなってしまいます。 全てのシートを選択状態にして、印刷をするvbaをしたいのですが、 シートが増えても使えるvbaコードはありますか?

  • エクセルのマクロで選択範囲の合計を求めたい

    A2:A10に数字があってその一つ下に合計をVBAで出したいのですがどうしたらよいでしょうか。 数字はA2:A50とかA2:A30とか毎回変わります、そしてその下に合計を出します。 マクロで記録したらその選択範囲まで記録されてしまうので 違う範囲が求められません。 とにかくある範囲のセルを選択してその選択範囲の一番下か、または選択範囲の一つ下に合計を出したいのです。 もしくはそのアクティブセル上にある数字の合計です。 どうぞご教示下さい。

  • Excelのシートを、まとめて表示位置をA1へ

    Excelのブックファイル(xls)の中に、いくつもシートがあるのですが、 カーソルのあるセルはばらばらです。 これをすべてのシートでまとめて、カーソルの位置をA1に持ってきて、 しかも、A1が表示された状態にしたいのですが、どうすればよいでしょうか。(以下も読んで下さい。) すべてのシートでまとめて、カーソルの位置をA1に持ってくることはできるのです。 (すべてのシートを選択して Control+HOME) 問題なのは、カーソルの位置がA1になったからといって、その位置が表示された状態になるとは限らないということです。(意味がわかりますか?) (現在表示されているシートはカーソル位置が表示されるようですけど。) スクロールバーを動かせば表示させたいところを表示できます。 しかし、いちいちそうしなくても、すべてのシートでA1が表示されているようにするには、どうすればよいのでしょうか。 すべてのシートを選択してスクロールバーを動かしても、すべてのシートをまとめて、表示位置を動かすことはできません。 バージョンは2000です。

  • エクセルのVBAマクロで隠れシートを表示させる方法について教えて下さい

    エクセルのVBAマクロで隠れシートを表示させる方法について教えて下さい。 エクセルで”書式→シート→表示しない”を実行するとエクセルのシートを非表示にすることが出来ます。 逆に”書式→シート→表示する”にすると隠れているシートが表示出来ます。 この非表示のシートを表示させるVBAマクロの記載を教えて下さい。 但し、”Sheets(シート名).Visible = True”の様にシート名を記載すれば非表示のシートが表示されるのは知っています。今回知りたいのは、シート名の分からない全ての非表示のシートを表示させるVBAマクロの記載方法を教えて下さい。

  • シート上のすべての画像を削除するには?

    エクセルのシート上のすべての画像を削除するには? 図のようにヤフーのトップページをコピーしてエクセルに貼り付けました。 その際画像も一緒に張り付いてしまいますが、 その画像をすべて消すVBAコードを教えてください。 Sub シートの全てのハイパーリンクを削除する() ActiveSheet.Hyperlinks.Delete End Sub これで、ハイパーリンクは消えるので、画像バージョンが知りたいです。 よろしくお願いします。

  • ExcelVBA グラフシートに表示するデータテーブル

    エクセルのVBAでグラフを作成するのですが、良い方法がなく、困っています。例えば、次の2つのテーブルがあり、 テーブルA   項目1|項目2 7/1 49.99|51.01 7/2 58.25|58.01 7/3 38.85|48.69 テーブルB   項目1|項目2 7/1 10| 12 7/2 15| 15 7/3 12.5| 20 テーブルAの値を使ってグラフを作成し、グラフシートに表示するデータテーブルはテーブルBの値を表示させたいのです。 VBAでなくても、手動の方法でもかまいません。 このようなグラフシートは出来るのでしょうか。ご教示ください。

  • マクロ?VBA?で新しいシートを増やす

    こんにちは、 Excelで新しいシートを挿入するマクロを作成したいのです。 「新しいマクロの記録」からすると、選択した前にシートが挿入されますが、選択した後に挿入したいのです。 その動作をショートカットキーの「Ctrl」+「n」で動くようにしたいのですが可能でしょうか? VBAは初心者です。よろしくお願いします。

  • エクセル 非表示のシートをハイパーリンクで表示できますか?

    こんにちは。 エクセルのブック内で、目次シートが1枚、詳細シートが3枚あります。目次の中の項目をクリックすると各詳細シートが開くようにハイパーリンクを設定してあります。 このままでも使えますが、詳細シート3枚を非表示にするとハイパーリンクが機能せず詳細シートが出てきません。 これはエクセルの仕様なんでしょうか?それとも設定の仕方が悪いんでしょうか? ちなみに友人が作ったVBAで設定したらうまくいきました。VBA以外に設定できる方法があるのであれば教えて頂ければ幸いです。 よろしくお願い致します。

  • EXCELのすべてのシートから特定セルの値だけを別のシートに書き出すには

    excelのマクロで別のEXCELファイルを選択して、たとえば、A3、E4、F10のセルの値だけをそのファイル内のシートすべて(シート数は変化)に対して別のEXCELファイルの1シートに各項目としてまとめて書き出すマクロを教えて下さい。 宜しくお願いします。

専門家に質問してみよう