vba裏技,技,論理 - セルの選択

セルの選択

① Range(“B4”).Select

② [c2].Select

③ Cells(5,2).Select

④ Cells.Find(“単位”)Select

⑤ Selection.Next.Select

⑥ Selection.End(xlDown).Select

⑦ Selection(1).Select

① は一般的なものだから誰でも使っていると思われるが、( )や””を入力するのが面倒だ。

② はそんな面倒な入力方法ではないので、使いやすい。[ ]は半角で入力できるので、①よりは使い勝手がいい。ただコンピューターによっては不安定な場合があるので、上手く作動しなければ①でやるより仕方がない。でも試す価値は充分にある。

③ は一番使い易い。注意しなければならないのは「cells( )」の後の数は行数、列数の順に表記し、①②の表記とは行列の順が逆である。しかし「B」とか「c」がないので、固定的あるいは絶対参照ではないので、使い方に弾力性がある。

例えばエクセルの表のどこかに「価格」という文字が入っていて、その行と「コーヒー」という、文字が入っている列の交点を選択したい場合などは便利である。④で解説するようにcells(cells.find(“価格”).row, cells.find(“コーヒー”)).columnと書けば 「価格」が入力されている行ナンバーが3であり、「コーヒー」の列番号が4であれば3行目と4列目の交点を選択できる。

④ は「単位」という文字が入力されているセルが選択される。「Cells.find()」の中には「what:=」など書かなくてもまずエラーにはならない。

「単位」という文字の入っている行全体の中で「金額」という文字が書いてあるセルを選ぶのは

Cells.Find(“単価”).EntireRow.Find(“金額”).Select

であり、

「連番」という文字が入力されている列全体の中のあるにある「合計」という文字が書かれているセルを選択するのは

Cells.Find(“連番”).EntireColumn.Find(“合計”).Select

ある選択された範囲の中で「適要」と入力されているセルを見つけるのは

Selection.Find(“摘要”).Select

である。

「find」の前の「selection,cells.entirerow」などは検索する範囲を示す。

「cells」はシート内の全てのセル、即ちシート全体を指す。

⑤ 選択されたセルの右を選ぶ

     Selectionの左は「selection.previous」だし、右は「selection.next」でいい。     

    きっちりと書くには「selection.offset(, -1)」あるいは「selection.offst(, 1)」

    であるが、入力が面倒だ。

    しかしselectionの一つ上は「selection.offset(-1)」だし、一つ下は  

    「selection.offset(1)」と書かなければならない。

⑥ 現在選択されているセルの連続している一番下を選ぶ場合の書き方だ。

    

    しかし途中で入力が途切れている場合は

    Cells(Rows.Count, Selection.Column).End(xlUp).Select

である。これはその最終行で選択されている列まで生き、戻ってくるという   

    書き方である。

    「end(xldown)]は選択されているセルに入力があれば、入力されているセル

    の最終行を指し、

    入力がない場合は下に行って入力されている最初のセルを選ぶ。

    なおどこにも入力されているセルがない場合はシートの一番下まで行ってし  

    まう。

    同じく上に行くのは「end(xlup)}

     右は    「end(xltoright)]

左は    「end(xltoleft)]

である。

  ⑦選択されているセルが複数あるrangeの場合、例えば行数が8、列数が4の範  

    囲が選択されているとき、選択されている最初のセルの選択は

「selection(1).select」

最後のセルは

「Selection(Selection.Count).Select」

で得られる。この場合の「selection」は「セル」と同じ意味で使われる。

これ以外のやり方もあるだろうが、正しい論理に基づいて書かれたコマンドは正しく作用する。決まった書き方などはない。

明日に続く

酒巻 修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です