• ベストアンサー

エクセルで指定したレンジを画面に丁度表示するには?

例えば、"Sheet1!$A$1:$H$80"を"_range"として定義します。 エクセルを新規に起動した場合であれば縦長のレンジになります。 この"_range"を自動で画面に丁度収まるようにするには、どうしたらよいでしょうか? VBAのヘルプで「Window オブジェクト」で調べてみたのですが分かりませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

一例ですが、_rangeという名前で Sheet1!$A$1:$H$80というセル範囲が 定義されているとして。 Application.Goto Range("_range"), True Range("_range").Select ActiveWindow.Zoom = True こんなコードで試してみてください。

whatsnew
質問者

お礼

有難うございます。 コピー&ペーストで試してみたらうまくいきました。

関連するQ&A

  • Excel VBA 定数にオブジェクトを指定したい

    Excel VBA 定数にオブジェクトを指定したい いつもお世話になりますm(__)m Excel VBAで、定数としてオブジェクトの指定はできないのでしょうか? 例えば、WorkSheets("Sheet1")を定数「Srt1」として設定したいのですが、  Public Const Srt1 As Object = Worksheets("Sheet1") としても「定数のデータ型が不正です」とエラーがでます。 例えば、セルに値をセットする時に Worksheets("Sheet1").Range("A1").Value="あああ" Worksheets("Sheet1").Range("A2").Value="いいい" Worksheets("Sheet1").Range("A3").Value="ううう" と書きますが、これを Srt1.Range("A1").Value="あああ" Srt1.Range("A2").Value="いいい" Srt1.Range("A3").Value="ううう" と書ければプログラムも見やすく、書きやすくなると思いました。 プログラムの最初に Dim Srt1 As Object Set Srt1 = Worksheets("Sheet1") とすれば使えるのですが、複数のシート名をまずは定数として登録したいと思っていますが、オブジェクト(ワークシート名)は定数として登録することは出来ないのでしょうか? お詳しいかた、是非ともご教授お願い致しますm(__)m

  • EXCEL 名前の定義 VBA参照の方法

    EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが  名前を定義する    シートA  名前:TEST 範囲:シートA    シートB  名前:TEST 範囲:シートB    シートC  名前:Pass 範囲:ブック  それぞれをVBAから参照する場合    Range("TEST").Value: シートA内のVBA    Range("Pass").Value  では、参照できず。    Worksheets("シートA").Range("TEST").Value    Worksheets("シートC").Range("Pass").Value  にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。

  • Range("Sheet2!A1")が何故通る?

    Excel VBAでRange関数を使っていて不思議に思う事があったので、少し質問させて下さい。 バージョンは、Office Standard 2010のVer14(32bit)です。 [Range]は、実際には[ActiveSheet.Range]の省略という認識でした。 そして、例えばSheet1がアクティブな状態で[ActiveSheet.Range("Sheet2!A1")]とすればエラーがでます。 [Range(Worksheets("Sheet2").Range("A1"))]でもエラーになります。 ところがこれが、[Range("Sheet2!A1")]だけにすると、問題なくSheet2のA1セルが取得できるのです。 セルに名前を付けた場合も、同じようにアクティブでないシートのセルが取得できました。 場合によって、Rangeの親オブジェクトがActiveSheetであったりなかったりするようなのですが、これはどのような仕様なのでしょうか? Microsoft Docsをざっと見たのですが、載ってなさそうだったので。 以下、自分がチェックに使ったコードです。 Sheet2!A1セルにShTwoという名前を付けています。 Sub test()  Debug.Print Range("A1").Address  Debug.Print Range("A1").Parent.Name ' Debug.Print ActiveSheet.Range("Sheet2!A1").Address '1004:アプリケーション定義またはオブジェクト定義のエラーです  Debug.Print Range("Sheet2!A1").Address  Debug.Print Range("Sheet2!A1").Parent.Name ' Debug.Print ActiveSheet.Range("ShTwo").Address'1004:アプリケーション定義またはオブジェクト定義のエラーです  Debug.Print Range("ShTwo").Address  Debug.Print Range("ShTwo").Parent.Name ' Debug.Print ActiveSheet.Range(Worksheets("Sheet2").Range("A1")).Address '1004:アプリケーション定義またはオブジェクト定義のエラーです ' Debug.Print Range(Worksheets("Sheet2").Range("A1")).Address ''Range'メソッドは失敗しました:'_Global'オブジェクト End Sub

  • エクセルVBAについて

    こんばんは。エクセルVBAについてアドバイスをお願いします。 エクセルのシートをNotesにオブジェクトとして貼り付けて使用しています。 エクセルファイルを開いたときに「シートA」を表示させましてその後そのシート上のデータを参照しながら別のシート上で作業したいと思っています。 しかしファイルを開くと 「'Sheets'メソッドは失敗しました'Globalオブジェクト'」というメッセージが表示されてしまいます。 エラーがでた場所は下記の※印の場所です。 =============================================== Dim WORK As Long Dim DATA As Object Set DATA = Worksheets("シートA").Range("A1") ※ WORK = DATA.Value =============================================== 情報が足りない場合は追記お願いします。 アドバイスお願い致します。

  • EXCEL VBA Applicationインスタンス内での範囲指定

    Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Private Const SCol = 1 Private Const SRow = 1 Private Const ECol = 1 Private Const ERow = 1 Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlBook.Sheets("Sheet1").Range("A1") = 1 xlBook.Sheets("Sheet1").Range(Cells(SCol,SRow), Cells(ECol, ERow)).Borders.LineStyle = True xlBook.SaveAs "c:\ss.xls" xlBook.Close xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing 以上のようにEXCEL VBA内で新規ExcelApplicationインスタンス内で値を代入し、線を引いているのですが線を引く範囲指定部分でアプリケーション定義またはオブジェクト定義のエラーですと表示されます。 xlBook.Sheets("Sheet1").Range("A1:B2").Borders.LineStyle = True ↑のような形であればエラーは出ません。 xlBook.Sheets("Sheet1").Range(Cells(1,1),Cells(2,2)).Borders.LineStyle = True ↑ではエラーが出ます。 新規ExcelApplicationインスタンス内でのRange(Cells)の使用方法が違うのでしょうか?よろしくお願いします。

  • エクセルVBA  activesheetの非表示

    エクセル2002使用です。 sheet1のモジュールにsheet2のセルから値を取得するコードを書きました。 セルの値を取得後、sheet1の画面に戻します。 値を取得するために一度sheet2をactivesheetにする必要があると思うのですが、 その際にマクロを実行するとエクセルの画面が一瞬sheet1からsheet2に変わってしまいます。 この、一瞬のsheet2の画面を出さない方法はあるのでしょうか? sub aaa() Dim tukikekka as range Worksheets("sheet2").Activate Set tukikekka = ActiveSheet.Range("A2:A15") _ .Find(what:=ActiveSheet.Range("A1"), lookat:=xlWhole) Worksheets("sheet1").Activate ActiveSheet.Range("H7").Value = tukikekka.Offset(,7) end sub (実際のコードはもう少し長いので、Sheet2がはっきりと見えます) よろしくお願いします。

  • 日付について

    Sheet1のA列に(A1からA365)に2005/4/1から1年間の日付があります。で、H5に今日の日付をいれます。で、I5にmatch(H5,A1:A65,0)といれると、きちんと値が戻ってきます。が、これをVBAで Sub test() mydate = range("H5").value myrow = Application.WorksheetFunction.Match(mydate, Range("A1:A365"), 0) End Sub とすると、アプリケーション定義またはオブジェクト定義のエラーです。 と表示され、できません。 同じ事をしていると思うんですが、違いが分かりません。教えてください。

  • エクセルのマクロで数式を入力したい

    エクセルのマクロで数式を入力したい エクセルのマクロでシート1のA1に シート2のA1の値を表示させる数式を入力したいと思って Sub tamesi() Sheet1.Activate Range("a1") = "=sheet2!a1" End Sub と書くと動作します ここにIF文をいれてシート2のA1に値がないときは シート1のA1には空白で返したいと思い Sub tameshi2() Sheet1.Activate Range("a1") = "=if(sheet2!a1= 0,"",sheet2!a1)" End Sub と打つと動作しませんでした アプリケーションの定義またはオブジェクトの定義のエラーです と返ってきます。 いろいろやってみたのですが、なにせ勉強し始めで よくわかりませんでした。 教えてください よろしくお願いします

  • Excel VBA 指定シートの取込

    こんにちは。 ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、 シートが無かった場合の処理方法がわかりません。 現在のコードは下記の様になっております。 With Workbooks.Open"BOOK1.xls" .Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") .Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") .Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1") .Close End With Book1に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • Excel VBA オブジェクトの指定方法と速度

    Excel VBAについて質問です。 ワークシートを指定するときの書き方には色々ありますが、1~3の速度の順番はどうなりますか? オブジェクトは、変数に入れて使用したほうが速度が速くなるそうなので、 1より2のほうが速いと思いますが、3はどうでしょうか? 1.Worksheets("sheet1") 2.Dim ws As Worksheet   Set ws = Worksheets("sheet1") 3.Sheet1 (VBE画面で表示されるシートのプロパティのオブジェクト名) Excelのオブジェクトについて詳しいかたがいらっしゃいましたら教えてください。 よろしくお願いいたします。

専門家に質問してみよう