【コピペでOK】数式が入力されているセルを操作する方法【Excel VBA】
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
数式が入っているセルだけ色を変えたい!
どうやってやるか教えて!
- 数式セルだけに処理をする方法
- Specilacellsメソッドの使い方
- エラーが発生したときの対処法←超重要です
サンプルコード紹介
数式が入っているセルを取得するには「SpecialCellsメソッド」を使います。
まずはサンプルコードと実際の画面を見て動きをイメージしてください!
もちろんそのままコピぺして使っていただいても大丈夫です!
On Error GoTo エラー処理
Dim 範囲 As Range
Set 範囲 = Cells.SpecialCells(xlCellTypeFormulas)
範囲.Font.ColorIndex = 3
Exit Sub
エラー処理:
MsgBox "数式が入力されているセルはありません"
このように数式セルのみを赤色に変更できました!
数式セルがない場合はメッセージボックスが表示されます。
Specialcellsメソッドとは?
数式が入っているセルを取得するには「SpecialCellsメソッド」を使いました。
この「SpecialCellsメソッド」は簡単に言うと、条件に一致したセルを一発で取得してくれるとても便利なメソッドです!
今回のように数式が入っているセルに使ってもいいですし、空白のセルや数値として入力されているセルを取得することも可能です!
Cells.SpecialCells(引数)
このように記述します。カッコの中に取得したいセルの種類に該当する引数を入力してください!
下記の表をご参考ください!
名前 | 値 | 説明 |
---|---|---|
xlCellTypeAllFormatConditions | -4172 | 表示形式が設定されているセル |
xlCellTypeAllValidation | -4174 | 条件の設定が含まれているセル |
xlCellTypeBlanks | 4 | 空白セル |
xlCellTypeComments | -4144 | コメントが含まれているセル |
xlCellTypeConstants | 2 | 定数が含まれているセル |
xlCellTypeFormulas | -4123 | 数式が含まれているセル |
xlCellTypeLastCell | 11 | 使われたセル範囲内の最後のセル |
xlCellTypeSameFormatConditions | -4173 | 同じ表示形式が設定されているセル |
xlCellTypeSameValidation | -4175 | 同じ条件の設定が含まれているセル |
xlCellTypeVisible | 12 | すべての可視セル |
エラーに対する処理
VBAではエラーが発生すると、処理が止まってしまいます。
今回で言うと、数式セルがない場合エラーが発生します。
そのような場合を想定して先にエラーが発生したときの処理を記述しておくことが必要です。
先にエラーが発生した時の処理を記述しておくのか〜
難しそうだけど大丈夫かな、、、
エラー処理は難しい印象が強いかもしれませんが、全くそんなことは無いので安心してください!
今回は「On Errorステートメント」を使って処理を書いていきます。
On Error GoTo 行ラベル
〜メイン処理〜
行ラベル:
〜エラー時に実行させたい処理〜
このように記述することで、エラー時にプログラムが止まることなく処理を実行することができます。
具体的には、「On Error GoTo」と書いたあとに、行ラベルを書きます。そして「行ラベル:」のあとにエラー時に実行させたい処理を書きます。
この行ラベルというのは変数のように自分のわかりやすい名前をつけていただいて結構です!
行ラベルも変数のように好きな名前をつけたらいいんだね。
今回使ったコードでは行ラベルに「エラー処理」という名前をつけました。
筆者は可読性を重視したいので日本語でつけています(笑)
ちなみに行ラベルは数値で入力することで行数を指定することも可能です。
しかし後でコードを修正することもあるので、個人的には名前をつけるやり方が一番オススメです!
まとめ
今回は数式の入ったセルのみに処理を実行する方法を解説しました!
数式セルのようにある条件を満たすセルを取得するには「Specilacellsメソッド」を使いましょう!
また、エラーが発生するようなコードを記述する時は発生した場合の処理も必ずセットで記述しておきましょう!
この記事で少しでも皆さんのお役に立てれば幸いです!
忘れないうちにお気に入り登録もお願いします!
ありがとうございました!
コメントはお気軽に!