GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−ワークシートを使いこなそう
  セルの操作をマスターしよう!
 
■ セルの操作をマスターしよう!

数回にわたってワークシート上のセルを操作するExcel VBAについて解説を行います。
今回はセルを操作する様々な方法について解説していきます。

セルを操作する

Excelのワークシートには、様々なデータを格納することができます。Excel VBAから、セルのデータを取得したり、コピーしたり、表示形式を変更することで、さらに便利で効率的なシステムを開発することが可能になります。

■セルの値を取得・設定する

・Valueプロパティ、Formulaプロパティ
Valueプロパティは、セルに値を取得・設定します。Formulaプロパティは、セルに数式を取得・設定します。

[書式]
オブジェクト.Value
オブジェクト.Value = 値

オブジェクト.Formula
オブジェクト.Formula = 数式

オブジェクトにはRangeオブジェクトを指定します。セルに数式が入力されている場合、Valueプロパティは数式の結果の値を、Formulaプロパティは数式そのものを取得します。

例:
Sub Test()
  Range("A1").Value = 100
  Range("A2").Value = Range("A1").Value + 100
  Range("A3").Formula = "=If(Sum(A1:A2)>=300,""A"",""B"")"
  Range("A4").Formula = Range("A3").Formula
End Sub
 
このプロシージャを実行すると、Valueプロパティによってアクティブシートの「A1」セルに「100」の数値を設定します。次に「A2」セルに「A1」セルの値に「100」を加算した値の「200」を設定します。さらに、Formulaプロパティによって「A3」セルに「=If(Sum(A1:A2)>=300,"A","B")」の数式を設定します。最後に「A4」セルに「A3」セルに入力された数式をそのまま設定するため、「A1〜A4」セルには「100」「200」「A」「A」の値が表示されます。

※ セルに表示されている値を、表示形式のとおりに取得したい場合は、Textプロパティを使用します。例えば、

Debug.Print Range("A1").Value
Debug.Print Range("A1").Text

で、「A1」セルに表示されている値が「1,000」の場合、Valueプロパティは「1000」を、Textプロパティは「1,000」を、それぞれ取得します。

※ Formulaプロパティを使用してセルに数式を設定する場合、数式全体を「"」で囲みます。このとき、数式の中で「"」を使用している場合、「""」と2つのダブルクォーテーションを使用して記述します。なおR1C1形式の数式を設定する場合は、FormulaR1C1プロパティを使用してください。

■セルの値をオートフィルする

・AutoFillメソッド
オートフィルと同じ動作を行います。セルの連続データを入力することができます。

[書式]
オブジェクト.AutoFill セル範囲, 種類

オブジェクトには、オートフィルの基準となるセルを指定します。

セル範囲
には、オートフィルを行うセル範囲を指定します。このとき、必ず基準となるセルを含めたセル範囲を指定します。

種類には次の、XlAutoFillTypeクラスの定数を指定します。
定数 内容 定数 内容
xlFillDefault (既定) 標準のオートフィル xlFillYears 年単位
xlFillCopy コピー xlFillMonths 月単位
xlFillSeries 連続データ xlFillWeekdays 週単位
xlFillFormats 書式のみコピー xlFillDays 日単位
xlFillValues 書式なしコピー    

省略すると、xlFillDefaultが適用されます。

例:
Range("A1").AutoFill Range("A1:A5"), xlFillCopy
Range("A1:C1").AutoFill Range("A1:C5"), xlFillSeries

上の例では、「A1」セルを「A1〜A5」のセル範囲にコピーしています。下の例では、「A1〜C1」のセル範囲を「A1〜C5」のセル範囲に、連続データとしてオートフィルします。

■セルの値をクリアする

・Clearメソッド、ClearContentsメソッド、ClearFormatメソッド、ClearComentsメソッド
Clearメソッドは、セルに格納されているデータと書式をクリアします。ClearContentsメソッドは、データのみクリアします。ClearFormatメソッドは、書式のみクリアします。ClearComentsメソッドは、コメントをクリアします。

[書式]
オブジェクト.Clear
オブジェクト.ClearContents
オブジェクト.ClearFormat
オブジェクト.ClearComents


オブジェクトには、クリアするセル範囲をしてします。

例:
Sub Test()
  Range("A1").Clear
  Range("A2").ClearContents
  Range("A3").ClearFormats
  Range("A4").ClearComments
End Sub

このプロシージャを実行すると、アクティブシートの「A1」セルの値と書式を、「A2」セルの値を、「A3」セルの書式を、「A4」セルのコメントを、それぞれクリアします。

※ セルにコメントを挿入するにはAddCommentメソッドを使用します。例えば「Range("A1").AddComment "SampleCommnet"」では、「A1」セルに「SampleCommnet」という文字列をコメントとして挿入します。

■セルの値をコピーする

・Copyメソッド、Pasteメソッド、PasteSpecialメソッド
Copyメソッドは、セルをクリップボードまたは貼り付け先のセルにコピーします。Pasteメソッドは、クリップボードのデータを指定したセル範囲に貼り付けます。PasteSpecialメソッドは、内容を指定して貼り付けることが可能です。

[書式]
オブジェクト.Copy セル範囲

オブジェクトにはRangeオブジェクトを指定します。

セル範囲には、貼り付け先のセル範囲を指定します。省略するとクリップボードに保存されます。

※ セルをコピーではなく移動したい場合は、Cutメソッドを使用します。Cutメソッドの書式は、Copyメソッドと同じです。

[書式]
オブジェクト.Paste セル範囲, リンク

オブジェクトには、Worksheetオブジェクトを指定します。

セル範囲には、貼り付け先のセル範囲を指定します。省略すると、現在選択しているセル範囲に貼り付けられます。

リンクには、TrueまたはFalseを指定します。元のデータとリンクする場合はTrueを、しない場合はFalseを指定します。省略するとFalseが指定されます。この引数を指定すると、引数「セル範囲」は指定できません。

[書式]
オブジェクト.PasteSpecial 内容, 演算, 空白セル, 行列入替


オブジェクトには、貼り付け先のセル範囲を指定します。

内容には、次のXlPasteTypeクラスの定数を指定します。
定数 内容
xlPasteAll (既定) すべて
xlPasteAllExceptBorders 罫線を除くすべて
xlPasteValues
xlPasteFormulas 数式
xlPasteFormats 書式
xlPasteComments コメント
xlPasteValidation 入力規則
xlPasteColumnWidths 列幅
xlPasteValuesAndNumberFormats 値と数値の書式
xlPasteFormulasAndNumberFormats 数式と数値の書式

※ 引数「内容」に使用できる定数はExcelのバージョンによって異なります。詳しくは、そのバージョンのヘルプを参照してください。

演算には、次のXlPasteSpecialOperationクラスの定数を指定します。
定数 内容
xlPasteSpecialOperationNone (既定) 演算をしない
xlPasteSpecialOperationAdd 加算
xlPasteSpecialOperationSubtract 減算
xlPasteSpecialOperationMultiply 乗算
xlPasteSpecialOperationDivide 除算

空白セルには、TrueまたはFalseを指定します。Trueを指定すると空白のセルを貼り付けの対象から除外します。省略するとFalseが適用されます。

行列入替には、TrueまたはFalseを指定します。Trueを指定すると行と列を入れ替えて貼り付けます。省略するとFalseが適用されます。

例:
Sub Test()
  Range("A1").Copy Range("A2")
  Range("A2").Copy
  ActiveSheet.Paste Range("A3")
  Range("A4").PasteSpecial xlPasteValues
  Application.CutCopyMode = False
End Sub

このプロシージャを実行すると、アクティブシートの「A1」セルを「A2」セルにコピーします。次に「A2」セルをクリップボードに保存し「A3」に貼り付けます。さらに「A4」セルに「A2」セルの値のみをコピーします。最後に「Application.CutCopyMode = False」でコピーモードを解除します。

※ コピーモードとは、コピーや切り取りを実行したときコピー元のセル範囲の周りが点滅した状態になることを指します。コピーモードの状態が解除されない間は、そのセル範囲を続けて貼り付けることが可能です。「Application.CutCopyMode = False」を実行すると、コピーモードは解除されます。

■セルを挿入・削除する

・Insertメソッド、Deleteメソッド
Insertメソッドは、指定した場所にセルを挿入します。Deleteメソッドは、指定した範囲のセルを削除します。

[書式]
オブジェクト.Insert 移動
オブジェクト.Delete 移動

オブジェクトには、セルを挿入・削除したいセル範囲を指定します。

移動には、挿入・削除後にセルを移動する方向をXlInsertShiftDirectionクラスの定数を指定します。
挿入する場合 削除する場合
定数 内容 定数 内容
xlShiftToRight 右に移動 xlShiftToLeft 左に移動
xlShiftDown 下に移動 xlShiftUp 上に移動

例:
Sub Test()
  Range("A1").Insert xlShiftDown
  Range("B1").Delete xlShiftToLeft
End Sub

プロシージャを実行すると、「A1」セルの場所に空白のセルが挿入され「A1」セルより下にあるセルが1行下方向に移動します。次に「B1」セルが削除され「B1」セルより右にあるセルが1列左方向に移動します。

■セルを結合する

・Mergeメソッド
指定した範囲のセルを結合します。

[書式]
オブジェクト.Merge 結合

オブジェクトには、結合したいセル範囲を指定します。

結合には、TrueまたはFalseを指定します。Trueを指定すると結合を解除、Falseを指定すると結合します。省略するとFalseが適用されます。

例:
Range("A1:A2").Merge
Range("A1:A2").Merge True

上の例では、「A1〜A2」のセル範囲を結合します。下の例では、「A1〜A2」のセル範囲の結合を解除します。

(注意)セルを結合すると、指定した範囲の左上端セルの値が、結合後のセルに表示されます。他のセルに入力されている値は削除されます。このとき確認のダイアログが表示されますが、「Application.DisplayAlerts = False」を記述することで、確認のメッセージを表示させないようにすることができます。

※ この他にセルの結合には、MergeCellsプロパティを使用することもできます。設定値はTrueまたはFalseで、Trueを指定すると、セル範囲を結合します。また戻り値で、指定したセルが結合セルに含まれているかどうかを確認できます。戻り値がTrueのとき、指定したセルは結合セルに含まれています。

■セルにふりがなを設定する

・GetPhoneticメソッド、SetPhoneticメソッド
GetPhoneticメソッドはセルの文字列からふりがなを取り出します、SetPhoneticメソッドはセルの文字列にふりがなを設定します。

例:
Range("B1") = Application.GetPhonetic(Range("A1"))

この例では、アクティブシートの「A1」セルに入力されている文字列からふりがなを取り出し「B1」セルに入力します。

例:
Range("A1").SetPhonetic
Range("A1").Phonetics.Visible = True

この例では、アクティブシートの「A1」セルに入力されている文字列にふりがなを設定し表示します。

※ SetPhoneticメソッドは、他のアプリケーションから取り込んだデータにふりがなを設定したいときに使用します。Excelで入力されたデータには自動的にふりがなが設定されるため、PhoneticsコレクションのVisibleプロパティをTrueに設定するだけでふりがなを表示することができます。

■セルにハイパーリンクを設定する

・Hyperlinks.Addメソッド、Followメソッド、Deleteメソッド
Hyperlinks.Addメソッドはセルにハイパーリンクを設定します、Followメソッドはハイパーリンクを実行します、Deleteメソッドはハイパーリンクを削除します。

例:
Sub Test()
  ActiveSheet.Hyperlinks.Add _
    Range("A1"), _
    "http://www4.plala.or.jp/gen2/excel/", , , _
    "リンク"
  ActiveSheet.Range("A1").Hyperlinks(1).Follow
  ActiveSheet.Range("A1").Hyperlinks(1).Delete
End Sub

このプロシージャを実行すると、アクティブシートの「A1」セルに「リンク」という文字列でエクセル大事典へのハイパーリンクを設定します。次に、ハイパーリンクを実行しブラウザでエクセル大事典のページを表示します。最後に、「A1」セルに設定したハイパーリンクを削除します。ただし「リンク」の文字列は削除しません。

例:
Sub Test()
  ActiveSheet.Hyperlinks.Add _
    Range("A1"), _
    "mailto:sample@xxx.com?subject=送信テスト", , , _
    "メール"
  ActiveSheet.Range("A1").Hyperlinks(1).Follow
End Sub

このプロシージャを実行すると、アクティブシートの「A1」セルに「メール」という文字列で「sample@xxx.com」のメールアドレスをハイパーリンクとして設定します。次に、ハイパーリンクを実行しメーラーソフトで新規メールが作成されます。このとき、メールの件名には「送信テスト」が設定されます。


以上、セルを操作するいろいろな方法について解説しました。
VBAからセル範囲を自由に操作することで、業務用アプリケーションに近い操作を、ワークシート上で実現することが可能です。あなたのシステム開発に、今回の解説を役立ててください。

次は、セルの書式を設定する様々な方法について詳しく解説を行います。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,