![見出し画像](https://assets.st-note.com/production/uploads/images/59858042/rectangle_large_type_2_075d90d1550026d3efbf8d13a1eddbde.png?width=1200)
第21回 VBAの悩みはVBAerに聞け
開催日時:2021年8月26日 20時~
登壇者 :Takushi@VBAとGAS勉強中 @Taxi3134
テーマ :Rangeの深層
今回はノンプロ研所属 VBA講座講師のTakushiさんの登壇です。
Takushiさんnotion( ..)φメモ
今夜のテーマは、Range Range Range
これはオレンジレンジ・・・どうすんだよ、この流れ。
気を取り直して、Range!
Excel VBAerで使ったことない人はいないであろうオブジェクト
そう、それがRange
Rangeと一言でいってもいろんな意味や使い方がある。
Takushiさんの解説が楽しみだぜぇ。
自己紹介
治験委員会(?初めて聞いた)と病院の仲介役ですって。
職場にはプログラミングできる人がいない。
Twitter見てると、100本ノックやって井の中の蛙と知る。
勉強して徐々に自身がついて本日の登壇に!
Rangeの話
Application.Cells・・・うむうむ基本だね。
グローバルに配下にあるものはApplication.を省略できる。
Cells、Rows、Columnsだけ使ったら全部同じ範囲
何故か行数で表示されるのは謎。
XFDまででも同じ。なんか不思議
特定範囲であれば、Cells、Rows、Colomnsで違いがです。
省略したらCellsの意。
RangeオブジェクトのCells
元のRangeをはみ出しても問題なし。
Cells(1,1).でインテリセンスでない問題
Rangeは引数と戻り値が規定されている
Cellsは引数が規定されていない。
Cellsの引数の正体は、_Default
非表示のメンバー。_Default=規定のプロパティ
Valueプロパティを省略しない男・・それがTakushi
Areasプロパティ Areasコレクションを返す
Areas(1)で左上範囲が、Areas(2)で右下範囲が選択される。
Unionメソッド
ちゅんさん、微熱で壊れてるな・・・
引数はArgは30個まで。
Unionに所属させられるRangeの個数は・・
UnionメソッドはRangeオブジェクトを返すのでそのAddressを表示してみる。
右下セルの取得
Findメソッドを使う
SearchOrderが大事
SearchDirectuon:=xlPreviousで後ろから検索
スピルがあるので、この表で検索
行方向、後ろから検索するとD11セルが最初の検索値結果になる。
同様に列方向で検索するとG5セルとなる。この二つを組み合わせるとG11
SpecialCells キタァァァァ
Ctrl+G ジャンプ機能の細かいやつ
SpecialCells(xlCellTypeFormulas)で取得するとこんな感じ
ループしながらUnionで範囲を拡張していく。
最後にひと工夫
これで最右下セルを選択できまっしゅ
何も記載ないシート、値だけのシート、計算式だけのシートにも対応
参考:
団長、重役出勤