見出し画像

イミディエイトで始めるExcelVBA -01-

前回記事は↓

前回までで

「VBEの開き方」「イミディエイトウィンドウの開き方」は

ご理解いただけと思います。


次はイミディエイトで「値の表示」というものをご紹介していこうと思います。


値とは

値というととても広義であると思いますので

今回は「プロパティの値」という意味でとらえていただければと思います。


プロパティとは「オブジェクトに設定されている値」を指します。

「オブジェクトはモノです」

いま喉の乾いた私が手を伸ばしたペットボトルはオブジェクトであり

「最大で何ℓ入るのか」「ラベルの色は何色か」「含有されている液体は何か」といった情報がプロパティです。


Excelの中で言い換えるとオブジェクトは「シート」「ブック」「セル」etc...

「シート」のプロパティは「シート名」「表示非表示」etc...

「ブック」のプロパティは「ブック名」「サイズ」etc...

「セル」のプロパティは「入力されている値」「文字色」etc...


Excel上で私たちが目にしているモノはオブジェクトであり

見た目はプロパティで設定されています。

いわゆる「モノの状態」ですね。


「値を確認して、処理を分ける」といったロジックは

頻繁に使います。

だからこそ、事前に「今設定されている値は何か」ということを

逐次確認することによって製造は捗りますし、

新たな発見をすることもできます。


だからこそ、イミディエイトウィンドウでの

「値の表示」方法を一番にオススメしたいと考えていました。


操作方法

操作はいたって簡単です。

イミディエイトウィンドウに「?オブジェクト.確認したいプロパティ」

入力し「Enter」を押下するだけです。


ブック名を表示

画像1


アクティブなシート名

画像2

セルA1の文字

画像3

画像4

さまざまな値の表示

上記でご紹介したもの以外にも

「そんなのも確認できるのか」といったものもあります。

前述したようにオブジェクトの状態を表すものなので

「セル」一つにもとたくさんのプロパティ存在します。


【セルが結合されているか】

Range.MergeCells

「Range(セル範囲)に結合セルが含まれている場合」

画像5

「Range(セル範囲)に結合セルが含まれていない場合」

画像6

【セル範囲にいくつセルが存在するか】

Range.Count

画像7

【セルの行番号】

Range.Row

画像8

【セルの列番号】

Range.Column

画像9

キリがないですw


イミディエイトウィンドウを生かす場面

私はツールの製造過程において

製造前の「事前調査」であったり

設計中に「どの状態を条件として分岐するか」を考える際に

よくイミディエイトウィンドウに頼っています。

製造中は「設計通りにコーディングすること」がセオリーなので

その前の準備として用いることがほとんどです。


例えば

送られてきたファイルのB列からD列までの結合を

解除したい」といった要望があるとします。


ファイル名(フルパス)は、ユーザーが実行時に

自ら指定したいようです。以下完成品です。


まず、ユーザーが欲している機能はどのコマンドで

実現できるかをググります。

その後、以下のようにイミディエイトウィンドウで

ググって出てきたコマンドを打ち込み挙動を確認します。

【セルが結合されているか】

画像10

画像11

True。「結合されているかどうかはRange.MergeCellsで確認できる」と判断

【セルの結合を解除する】

画像12

画像13

実際にセルA1とセルB1の結合が解除された。

「Range.MergeCellsにFalseを代入することでセルの結合を解除できる」※1と判断

※1:先頭に「?」をつけないと、値を代入できるプロパティがあります。


上記のように準備を行い、すべて完了したらプログラムに書きおこします。

事前に設計とコマンドの検証が完了しているのであとは

あとは設計段階で作成した下記の処理フローにコマンドを

当てはめてコーディングするだけです。

画像14

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


次回

今回はプロパティについて紹介させていただいたので

メソッドについてとイミディエイトウィンドウと一緒に活用すると

とても便利なオブジェクトブラウザについて紹介させていただこうと

おもっています。


以上になります。

いいなと思ったら応援しよう!