• ベストアンサー

Excel Vba でデータの範囲を知るには?

Excelを使用していますが、マクロ(VBA)で、シートのデータの範囲を知るにはどうすればよいのでしょうか。  印刷プレビューを行うと、自動的にページ数が求めらていますが、これは、シートのデータの範囲(列及び行の最大値)を判別しているからできるのだと思います。  これを、VBAで行、及び列のMAX値を取得したいのですが、そのメソッド(プロパティ)を知りたいのです。  どなたかご教授ください。

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

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

説明不足だったかもしれませんので追記しておきます。 以下のようにして範囲を求めたりしています。まだ簡単な方法があるかもしれません。 参考にして下さい。 標準モジュールに貼り付けます。 Public Sub UsedAreaAddress()   Dim myUsedAddress As String '使用範囲   Dim myUsedRows As Long '使用行数   Dim myUsedColumns As Integer '使用列数   Dim myUsedStartCell As String '最初のセル   Dim myUsedEndCell As String '最後のセル   Dim myPrintArea As String '例えば印刷範囲(最初の行を除く)   Dim myMsg As String 'メッセージボックスへの出力   With ActiveSheet     '使用範囲     myUsedAddress = .UsedRange.Address     '使用行数     myUsedRows = .UsedRange.Rows.Count     '使用列数     myUsedColumns = .UsedRange.Columns.Count     '最後のセル     myUsedEndCell = .Cells.SpecialCells(xlCellTypeLastCell).Address     '最初のセル     myUsedStartCell = Range(myUsedEndCell).Offset(1 - myUsedRows, 1 - myUsedColumns).Address     '例えば、最初を表題として表題を除いた印刷範囲(行タイトル等は別途指定)     myPrintArea = Range(myUsedStartCell).Offset(1, 0).Address & ":" & myUsedEndCell   End With   myMsg = "データが入力されている矩形範囲 " & myUsedAddress & vbLf & vbLf   myMsg = myMsg & "最初のセル " & myUsedStartCell & vbLf   myMsg = myMsg & "最後のセル " & myUsedEndCell & vbLf & vbLf   myMsg = myMsg & "行数 " & myUsedRows & vbLf   myMsg = myMsg & "列数 " & myUsedColumns & vbLf & vbLf   myMsg = myMsg & "印刷範囲例 " & myPrintArea   MsgBox myMsg End Sub

yamamichi
質問者

お礼

早速に回答いただきありがとうございました。 例題を参考にさせていただき、データの範囲を知ることができました。 また、何かありましたらよろしくお願いいたします。

その他の回答 (1)

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

UsedRange や SpecialCells で求められると思います。 印刷範囲だと、どう指定するか分かりませんし、求めた範囲を細工する必要があるかもしれません。 詳しくはHelpをご覧下さい。

関連するQ&A