
基本からわかるExcel VBA 実用Q&A
目次
-
[Excel VBA]セル内の改行を調べるには?
セルを編集している状態でAltキーを押しながらEnterキーを押すと、セル内で改行できます。こうしたセル内改行がされているかどうかを判定するには、セルの値に「vbLf」が含まれているかどうかを調べます。vbLfは、セル内改行を表す定数です。
-
[Excel VBA]セルの選択を判定するには?
セルが選択されているかどうかを判定するには、選択されているオブジェクトを表すSelectionを、TypeName関数で調べます。TypeName関数は、現在格納されているデータの形式を調べるものです。セルが選択されているときは、Rangeという文字列を返します。
-
[Excel VBA]範囲内にあるかを調べるには?
任意のセルが特定のセル範囲内に存在しているかどうかを判定するには、ApplicationオブジェクトのIntersectメソッドを使います。Intersectメソッドは、引数に指定した2つのRangeオブジェクトの重複しているセルを返します。
-
[Excel VBA]コメントを編集状態にするには?
マクロでコメントを挿入した後、その場でコメントの内容をキーボードから入力できるようにしたいケースがあります。ところが、マクロには、「コメントを編集状態にする」という命令はありません。せっかくマクロでコメントを挿入しても、その内容を入力するには、いちいち「コメントの編集」メニューを選ばなければならな…
-
[Excel VBA]コメント内を検索するには?
セルに挿入したコメント内を検索するには、検索を実行するFindメソッドの引数LookInに、定数xlCommentsを指定します。引数LookInには、数式の場合xlFormulas、値の場合はxlValuesを指定します。
-
[Excel VBA]セルに名前を付けるには?
セルやセル範囲には「名前」を定義することができます。手動で名前を付けるには、セルやセル範囲を選択して、シート左上の名前ボックスに名前を入力します。すると数式などで、名前でセルやセル範囲を指定できるようになります。
-
[Excel VBA]別シートのセルを選択するには?
別シートのセルは、「Sheets("Sheet2").Range("B3")」のようにシート名をピリオドでつないで表すことができます。ところが、このセルを選択状態にしようとして「Sheets("Sheet2").Range("B3").Select」のように記述するとエラーになります。
-
[Excel VBA]空白セルだけを操作するには?
任意のセル範囲で空白セルだけ操作したいとき、手動では、F5キーを押して「ジャンプ」ダイアログボックスを開き、「セル選択」ボタンを押します。すると「選択オプション」画面が表示されるので、「空白セル」を選択してOKを押します。これで選択範囲中の空白セルのみを選択できます。
-
[Excel VBA]セルにコメントを挿入するには?
セルにコメントを挿入するには、セル(Rangeオブジェクト)のAddCommentメソッドを使います。ただし、すでにコメントが挿入されているセルにAddCommentメソッドを実行するとエラーになります。そこで、セルにコメントが挿入されているかどうかを事前に判定するとよいでしょう。
-
[Excel VBA]セルを検索するには?
セルを検索するにはFindメソッドを使います。引数Whatに検索語を指定します。注意したいのは、「見つからなかった」ときです。Findは、検索値が見つからなかったときにNothingという特別な値を返します。返り値がNothingかどうかを判定するときは、「=」演算子ではなく「Is」演算子を使いま…
-
[Excel VBA]右隣や左隣のセルを操作するには?
RangeオブジェクトのNextプロパティは、右隣のセルを返します。また、左隣のセルを返すのがPreviousプロパティです。上のセルや下のセルを返すプロパティはありませんので、上や下のセルを操作する場合には、次回で紹介するOffsetプロパティなどを使います。
-
[Excel VBA]相対的な位置のセルを操作するには?
あるセルから見て、相対的な位置にあるセルを操作するには、Offsetプロパティを使います。指定した行数だけ下方向に移動し、指定した列数だけ右方向に移動した位置にあるセルを表せます。
-
[Excel VBA]セルや行、列を削除するには?
セルや行、列を削除するにはDeleteメソッドを使います。セルやセル範囲を削除する場合、標準では削除した分、その下のセルが上に詰められます。右側のセルを左に詰めたいときは、「Shift:=xlToLeft」と引数を指定します。
-
[Excel VBA]セルに格子の罫線を引くには?
セルに格子罫線を引く操作を「マクロの記録」機能を使って記録すると、膨大なコードが記録されます。しかしながら、標準的な格子の罫線を引くだけなら、下のサンプルコードのような1行で実現可能です。
-
[Excel VBA]セルに外枠の罫線を引くには?
セルに外枠の罫線を引く操作をマクロに記録すると、膨大なコードが記録されます。しかし、標準の罫線を引くだけなら、下のサンプルコードのような1行で実現可能です。
-
[Excel VBA]セルが空欄かどうか調べるには?
セルが空欄かどうかを調べたいとき、「セルの値が“長さ0”であることを、どのように調べればよいのか?」などと難しく考える必要はありません。最も手っ取り早い方法は、Excelで空欄を表す「""」(ダブルクォーテーション2つ)を使って、セルの値が「""」かどうかを判定する方法です。
-
[Excel VBA]セルにフリガナを設定するには?
Excelには、セルに入っている漢字の「フリガナ」を表示する機能があります。これは、セルに入力したときのかな漢字変換の情報を記録したものです。そのため、他のアプリケーションからコピーしたデータや、マクロで入力した漢字にはフリガナが設定されません。
-
[Excel VBA]セルを結合するには?
セル範囲を結合するには、セル範囲を表すRangeオブジェクトに対してMergeメソッドを実行します。結合したセルに値を入力するには、結合した範囲の左上隅に位置するセルに、値を代入します。ツールバーにある「セルを結合して中央揃え」ボタンと違って、Mergeメソッドは結合するだけなので、文字列の中央揃…
-
[Excel VBA]セルが数値かどうか調べるには?
セルに入っている値が数値かどうかは、IsNumeric関数を使って調べられます。引数にセルや値を指定すると、それが数値の場合にTrueを返します。
-
[Excel VBA]セルが日付かどうか調べるには?
セルに入っている値が日付かどうかを調べるには、IsDate関数を使います。セルにシリアル値が入っていて、日付の表示形式が設定されているとき、IsDate関数はTrueを返します。