イミディエイトで始めるExcelVBA -01-
前回記事は↓
前回までで
「VBEの開き方」「イミディエイトウィンドウの開き方」は
ご理解いただけと思います。
次はイミディエイトで「値の表示」というものをご紹介していこうと思います。
値とは
値というととても広義であると思いますので
今回は「プロパティの値」という意味でとらえていただければと思います。
プロパティとは「オブジェクトに設定されている値」を指します。
「オブジェクトはモノです」
いま喉の乾いた私が手を伸ばしたペットボトルはオブジェクトであり
「最大で何ℓ入るのか」「ラベルの色は何色か」「含有されている液体は何か」といった情報がプロパティです。
Excelの中で言い換えるとオブジェクトは「シート」「ブック」「セル」etc...
「シート」のプロパティは「シート名」「表示非表示」etc...
「ブック」のプロパティは「ブック名」「サイズ」etc...
「セル」のプロパティは「入力されている値」「文字色」etc...
Excel上で私たちが目にしているモノはオブジェクトであり
見た目はプロパティで設定されています。
いわゆる「モノの状態」ですね。
「値を確認して、処理を分ける」といったロジックは
頻繁に使います。
だからこそ、事前に「今設定されている値は何か」ということを
逐次確認することによって製造は捗りますし、
新たな発見をすることもできます。
だからこそ、イミディエイトウィンドウでの
「値の表示」方法を一番にオススメしたいと考えていました。
操作方法
操作はいたって簡単です。
イミディエイトウィンドウに「?オブジェクト.確認したいプロパティ」と
入力し「Enter」を押下するだけです。
ブック名を表示
アクティブなシート名
セルA1の文字
さまざまな値の表示
上記でご紹介したもの以外にも
「そんなのも確認できるのか」といったものもあります。
前述したようにオブジェクトの状態を表すものなので
「セル」一つにもとたくさんのプロパティ存在します。
【セルが結合されているか】
Range.MergeCells
「Range(セル範囲)に結合セルが含まれている場合」
「Range(セル範囲)に結合セルが含まれていない場合」
【セル範囲にいくつセルが存在するか】
Range.Count
【セルの行番号】
Range.Row
【セルの列番号】
Range.Column
キリがないですw
イミディエイトウィンドウを生かす場面
私はツールの製造過程において
製造前の「事前調査」であったり
設計中に「どの状態を条件として分岐するか」を考える際に
よくイミディエイトウィンドウに頼っています。
製造中は「設計通りにコーディングすること」がセオリーなので
その前の準備として用いることがほとんどです。
例えば
「送られてきたファイルのB列からD列までの結合を
解除したい」といった要望があるとします。
ファイル名(フルパス)は、ユーザーが実行時に
自ら指定したいようです。以下完成品です。
まず、ユーザーが欲している機能はどのコマンドで
実現できるかをググります。
その後、以下のようにイミディエイトウィンドウで
ググって出てきたコマンドを打ち込み挙動を確認します。
【セルが結合されているか】
True。「結合されているかどうかはRange.MergeCellsで確認できる」と判断
【セルの結合を解除する】
実際にセルA1とセルB1の結合が解除された。
「Range.MergeCellsにFalseを代入することでセルの結合を解除できる」※1と判断
※1:先頭に「?」をつけないと、値を代入できるプロパティがあります。
上記のように準備を行い、すべて完了したらプログラムに書きおこします。
事前に設計とコマンドの検証が完了しているのであとは
あとは設計段階で作成した下記の処理フローにコマンドを
当てはめてコーディングするだけです。
Sub Main()
Dim wbTarget As Workbook: Set wbTarget = Get_Workbook(InputBox("ファイルパスを入力してください。", "入力ダイアログボックス"))
Dim r As Range
With wbTarget.Worksheets(1)
For Each r In .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp))
.Cells(r.Row, 2).MergeCells = False
Next r
End With
End Sub
Private Function Get_Workbook(strFilePath As String) As Workbook
Set Get_Workbook = Workbooks.Open(strFilePath)
End Function
次回
今回はプロパティについて紹介させていただいたので
メソッドについてとイミディエイトウィンドウと一緒に活用すると
とても便利なオブジェクトブラウザについて紹介させていただこうと
おもっています。
以上になります。