VBAの門を眺める

間違っていたら教えてください……

VBAでやさしいメモ帳を作成した

 

 はじめまして。吉浦と申します。本名ではありません。

 

今回はネットで拾ったもののコピペ(https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1445167239)なのですが、

作ってから観察したら良い勉強になったので、ここにまとめます。

 

 

***

 

【コードの中身】

Option Explincit

   Sub ShowTB() 

   memo.Show 0

End Sub

 

memoというのは、UserFormにつけた名前です。

UserFormなんて名前のメモ帳いやだから、私がmemoに変えました。

名前を変えたので、コードの中の該当する文字列も変更しています。

 

【ユーザーフォームの設定】

オブジェクト名 →memo

EnterKeyBehavior →True Enterキーで改行できる!

(Falseだと、改行するためにCtrl+Enterの操作が必要。)

MultiLine →True 複数行入力できる!

(Falseだと1行しか入力できないし、もちろん改行もできない。)

 

 

…蛇足だけど設定してよかったので書いておきます…

フォント

↑VBEのフォント変えたらめちゃくちゃやりやすくなったので、お好きなフォントに変えるの絶対おすすめ!!読みにくいフォントだなぁと思ってたんだ…。

文字の色とかも変えられました!

 

やり方はググればすぐでてきたのでググったらいい。

 

 

 

◇モードレス表示

 

Modal Modeless っていうのは、

Showメソッドの構文で指定するVariant値 

(??)

 

構文は

[Object] .Show modal

今回は

ObjectがUserForm(memoって名前つけた)

.Showがメソッド(?)で

最後についてるmodalっていうのをmodeless指定にしていたおかげで、

メモとして使い勝手がとてもよかったというのが今回お話したいこと。

 

Office曰く

UserForm がモーダルの場合、ユーザーはアプリケーションの他の部分を使用する前に応答する必要があります。 UserForm が非表示またはアンロードされるまで、その後のコードは実行されません。 UserForm が表示されたとき、アプリケーション内のその他のフォームになっていますが、その他のアプリケーションは無効ではありません。

https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/show-method

 

ってあんまり直感的でないのだけれど

要するに、

たとえばUserFormで「はい」とか「いいえ」とかのボタンが出てきたときに

どっちか押さないと画面上の他のところを操作できないことってあるじゃないですか。

 

あれ!が、たぶんそのmodal表示指定ってやつなんだという理解をした。とりあえず。

ちがったら教えてくださいお願いします…

 

そんな融通の利かないユーザーフォームも!

modeless指定にしたら、どこにでも置けるの!

Excel画面外にも置けちゃう。ググりながらメモれちゃう。

ちょっと感動しました。

 (ユーザーに画面の他の部分をいじってほしくない時とかに、Modal表示がよいみたい)

 

今回のメモ帳はコピペなので、そんな設定になってるなんて知らなかったんだけど、

Twitterでこんな機能見つけた!!ってツイートしたら、フォロワーさんが教えてくれました。笑

 

何のことかと思ってよく見たら、.Showの後ろに「0」がありました。

(コピペしたときは、()←だと思ってた…笑)

 

0が、定数modelessの値バージョンだったんだ。

.Showメソッドで指定するVariant値が0だったんだ。

.Show vbModelessと

.Show 0 は

同じ意味だったんだよ。

 

Variant値になってるってことは、文字列(vbModeless)でも数値(0)でもどっちでもいいようにしてるよってことなんだろうか…?

この辺がまだわからなくて、情報集め中です…。

 

次回は情報集めてるところを載せておこうかなと思います。

 

 

引き続き、お付き合いのほど

よろしくお願いいたします。