Excel Tips by pPoy

トップへ←Top    VBAへVBA  VBA基礎へ VBA 基礎  一般へ一般  

Macro ABC 取得済み範囲の移動・拡大・行数・列数・最下行 etc. (Excel97,2000,2002)
ExcelVBA で取得済みのセル範囲を移動や拡大する方法をまとめてみました。
《CurrentRegion, EntireRow, EntireColumn, Resize, Offsetメソッド》
おまけとして、《UsedRangeプロパティ》

≪CurrentRegion≫
  'アクティブセル領域取得
  'A1を含むデータベース形式のセル範囲選択

  Range("A1").CurrentRegion.Select
  'アクティブセル範囲を罫線で囲む

  Range("A1").CurrentRegion.BorderAround Weight:=xlThick
  '名前付きセル範囲を更新
  '後から追加された部分を範囲に含める

  Range("印刷範囲").CurrentRegion.Name = "印刷範囲"
  '範囲内の行数取得

  Range("A1").CurrentRegion.Rows.Count
  '範囲内の列数取得

  Range("A1").CurrentRegion.Columns.Count

この頁のTOPへTop

≪Rows,Columns≫
  '範囲内の一行を取得
  '範囲内の3行目(B4〜E4)のみに10を入力

  Range("B2:E5").Rows(3).Value = 10
  '範囲内の一列を取得
  '範囲内の2列目(C2〜C5)に"個"を入力

  Range("B2:E5").Columns(2).Value = "個"

この頁のTOPへTop

≪EntireRow,EntireColumn≫
  '指定された範囲を元に、シート全体の行に広げる
  '範囲を含む行全体(2行目、3〜5行目のシート全体に100と入力)

  Range("A1,E3:G5").Select
  Selection.EntireRow.Value = 100
  '指定された範囲を元に、シート全体の列に広げる
  '範囲を含む列全体(A列、E〜G列のシート全体に「本」と入力)

  Range("A1,E3:G5").Select
  Selection.EntireColumn.Value = "本"

この頁のTOPへTop

≪Resize,Offset≫
  '範囲の変更
  '「A1」を起点に、10行・8列に変更する
  '結果として、A1〜H10まで選択される

  Range("A1:C5").Resize(10, 8).Select
  '範囲の移動
  '選択範囲の大きさはそのまま、下に10行・右に8列移動
  '結果として、I11〜K15が選択される

  Range("A1:C5").Offset(10, 8).Select
  'データベース形式の表から見出し以外のデータ部分のみ選択
  '2行目以降を全て選択

  With Range("住所録")
    .Offset(1, 0).Resize _
      (.Rows.Count - 1, Columns.Count).Select
  End With
  'データベースの入力済み最終行の左端を選択

  Range("B" & Rows.Count).End(xlUp).Select
  'データベースの最新入力位置選択
  '最終行の一行下

  Range("B" & Rows.Count).End(xlUp).Offset(1).Select

この頁のTOPへTop

≪UsedRange≫
おまけとして、UsedRange プロパティです。上の CurrentRegion プロパティと比べてみてください。
飛び飛びにデータが入力されてあっても、空白の行や列が間に存在しても、
確実に全ての範囲を取得します。

≪注意≫
CurrentRegion プロパティは、対象が Range オブジェクトです。
UsedRange プロパティは、対象が Worksheet オブジェクトです。
  'アクティブシート内の使用されたセル領域を一括選択
  '(使用されて無いセルも含んで一括に取得します)

  ActiveSheet.UsedRange.Select
  '使用されたセル範囲を罫線 (太線) で囲む

  ActiveSheet.UsedRange.BorderAround Weight:=xlThick
  '使用済みセル範囲の行数取得

  ActiveSheet.UsedRange.Rows.Count
  '使用済みセル範囲の列数取得

  ActiveSheet.UsedRange.Columns.Count


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。
又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら


Copyright(C) pPoy 2003-2010