イミディエイトウインドウの使い方と挙動
参考:イディミエイト・ウォッチ・ローカルウィンドウ - Excelでお仕事!
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_040_025.html
ついさっきまで、イミディエイトウインドウについては「Debug.Printで指定した内容を出力することができるテキストエディタ」くらいの認識だったんですが、上記ページを見て初めてセルの中身なんかが出力できることを知りました…。
えっこれ今更なの?みんな知ってるやつなの??と思いつつ色々遊んでみました。
基本:デバッグ出力
プログラム中に「Debug.Pring」を埋め込むことで、変数などをイミディエイトウインドウに出力できる。
Dim hoge As Long hoge = 123 ' 変数hogeの中身を出力 Debug.Print hoge ' 「hoge」という文字列を出力 Debug.Print "hoge"
セルの中身を出力する
プログラムとは関係なく、
イミディエイトウインドウ内に「?」をつけて表示するものを書いてEnterすると、中身が表示されます。
' A1セルの中身を表示 ?Range("A1") hoge ' A1セルの中身を表示 ?ThisWorkBook.Sheets("Sheet1").Range("A1").Value hoge ' A1セルのアドレスを表示 ?Range("A1").Address $A$1
おおー。
今まで、「こういうものを取得したいけど文法合ってるかな?」みたいなときはデバッグ入れて動かして試してたんですが、こういう簡単なものであればここで試せばOKですね。
イミディエイトウインドウに直接「Debug.Print Range("A1")」と書いても同じ挙動だったので、省略形が「?」という扱いなのかも?
(尚、プログラムの方に「?Range("A1").Address」と書くと、「Print Range("A1")」に自動で補完されます)
セルの中身以外も…
他にもいろいろ試してみました。
' ブック名を表示 ?ThisWorkBook.Name Book1 ' 1+2を計算 ?1+2 3 ' 9の平方根 ?Sqr(9) 3 ' 「hoge」の「o」を「a」に置換 ?Replace("hoge", "o", "a") hage ' 特定の文字列 ?"hoge" hoge
関数の動きを試したり、計算したりも可能ですね。
変数も使用可能
変数は使えるのかなーと思ってやってみたらこの通り。
a=1 b=2 ?a+b 3
変数宣言はできませんでしたが、宣言なしで代入して使うことが可能でした。
ただし、「a=1」や「b=2」を書いたあとは必ずEnterキーを押す必要があります。
Enterキーを押すことでその行が認識される、という挙動のようです。
尚、右クリックして「リセット」を選択すると、変数の中身はリセットされます。
a=1 ?a 1 ?a 1 ' ここでリセット ?a 0
じゃあIf文やFor文は…と思いましたが、これは厳しそう。
さっきも書いたとおり、Enterキーを押すことでその行が認識されるようなので、
少なくとも1行で書ける構文でないとダメなようですね。
For i = 0 To 5 'ここでEnterすると構文エラー For i = 0 To 5 hoge = 1 Next ' これはこれでエラー
自分で作った関数を呼ぶことは可能
画像はPublicになってますが、Privateもいけました。
ローカル関数作ったので簡単に確認、なんて時もこれでOKですね。