即効テクニック

セル操作関連のテクニック

特定のセルを選択する

(Excel 97/2000/2002/2003/2007)
ワークシート上に作成した表を運用するとき、表の中に作成した数式はそのままで入力したデータ(値)だけを削除したいことがあります。
数式を入力したセルも、見た目は計算結果が表示されていますから、セルに入力されているのが数式なのかデータなのかは、数式バーを見ないと確認できません。

Excelには「数値だけを削除」する機能はありませんが「数値だけを選択」するのは簡単です。
[編集]-[ジャンプ]で[ジャンプ]ダイアログボックスを開き[セル選択]をクリックします。
表示される[選択オプション]ダイアログボックスで[定数]をチェックして[数値]だけをオンにします。[OK]ボタンをクリックすれば、選択したセル範囲内で数値が入力されているセルだけが選択されます。

このように、特定のセルだけを選択するのがSpecialCellsメソッドです。
上記の動作は次のようなマクロで実現できます。

Sub Sample1()
  Selection.SpecialCells(xlCellTypeConstants, 1).Select
End Sub   
選択できてしまえば、セルをクリアしようが、色を変えようが、思いのままです。 選択せずに、いきなりクリアするのなら次のようにします。
Sub Sample2()
  Selection.SpecialCells(xlCellTypeConstants, 1).ClearContents
End Sub
SpecialCellsは、特定のセルを一発で見つけてくれる、とても便利なメソッドです。 第1引数に指定できる主な定数は次の通りです。 定数xlCellTypeAllFormatConditionsは、条件や書式に関係なく、とにかく条件付き書式が設定されているセルを返します。 次のマクロは、A列で条件付き書式が設定されているセルのアドレスを表示します。
Sub Sample3()
  Dim c As Range, msg As String
  For Each c In Range("A:A").SpecialCells(xlCellTypeAllFormatConditions)
    msg = msg & c.Address(0, 0) & vbCrLf
  Next c
  MsgBox msg & vbCrLf & "に条件付き書式が設定されています"
End Sub   
定数xlCellTypeAllValidationも同じように、設定した規則に関係なく、入力規則が設定されているすべてのセルを返します。 特定の条件付き書式と、同じ条件付き書式が設定されているセルを見つけるには定数lCellTypeSameFormatConditionsを指定しましょう。 数値や文字列が入力されたセルを見つけるには、定数xlCellTypeConstantsまたは定数xlCellTypeFormulasを指定します。 そのとき、第2引数に定数または数式の結果を指定します。 【セルに入力された値を探す】 ・SpecialCells(xlCellTypeConstants, xlErrors)  エラー値が入力されているセルが対象になります。  数式の結果がエラーになっているセルは該当しません。  セルに直接エラー値を入力することはほとんどないでしょうからあまり使われません。  ちなみに、セルに「#NAME?」などと入力すると、エラー値と認識されます。 ・SpecialCells(xlCellTypeConstants, xlLogical)  論理値が入力されているセルだけが対象になります。  数式の結果が論理値になっているセルは該当しません。 ・SpecialCells(xlCellTypeConstants, xlNumbers)  数値が入力されているセルだけが対象になります。  数式の結果が数値になっているセルは該当しません。 ・SpecialCells(xlCellTypeConstants, xlTextValues)  文字列が入力されているセルだけが対象になります。  数式の結果が文字列になっているセルは該当しません。 【数式の結果を探す】 ・SpecialCells(xlCellTypeFormulas, xlErrors)  数式の結果がエラーとなっているセルが対象になります。 ・SpecialCells(xlCellTypeFormulas, xlLogical)  数式の結果が論理値となっているセルが対象になります。 ・SpecialCells(xlCellTypeFormulas, xlNumbers)  数式の結果が数値になっているセルが対象になります。  数値を入力したセルは該当しません。 ・SpecialCells(xlCellTypeFormulas, xlTextValues)  数式の結果が文字列になっているセルが対象になります。  文字列を入力したセルは該当しません。 複数のデータを探すときは、第2引数を合計して指定します。 ・SpecialCells(xlCellTypeFormulas, xlNumbers + xlTextValues)  数式の結果が、数値または文字列のセルが対象になります。