アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

UsedRange や SpecialCells で求められると思います。



印刷範囲だと、どう指定するか分かりませんし、求めた範囲を細工する必要があるかもしれません。

詳しくはHelpをご覧下さい。
    • good
    • 0

説明不足だったかもしれませんので追記しておきます。


以下のようにして範囲を求めたりしています。まだ簡単な方法があるかもしれません。
参考にして下さい。

標準モジュールに貼り付けます。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/06 18:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!