• ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答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/7941)
回答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/7941)
回答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

専門家に質問してみよう