[[20110808114122]] 『テキストボックスで縦方向の中央揃え』(ぺぺ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストボックスで縦方向の中央揃え』(ぺぺ)

 テキストボックスに表示される文字列を縦方向に中央揃えしたいのですが、そのような
 プロパティはないのでしょうか。
 横方向なら TextAline で設定できるのですが、縦方向がわかりません。

 やりたいことは、文字サイズに対してちょっと大きめのテキストボックスに文字を
 表示するとき、文字がテキストボックスの上の方に表示されてバランスが悪いので、
 見栄えをよくしたい、ということなのです。
 「中央揃え」でなくても、テキストボックスの上端の余白を設定できるようなことが
 あればいいのですが。

 バージョンによって設定方法が異なるので、
 EXCEL のバージョンは記載したほうがよいと思います。

 2003 以前ではテキストボックスの「書式設定」で、「配置」⇒縦位置
 2007 以降ではテキストボックスの「図形の書式設定」で、「テキストボックス」⇒垂直方向の配置
 で設定できないでしょうか。
 (Mook)

 Mookさん、ありがとうございます。

 エクセルのバージョンは 2003、Windows のバージョンは Vista と 7 です。

 >2003 以前ではテキストボックスの「書式設定」で、「配置」⇒縦位置

 「テキストボックスの書式設定」には、どうやっていくのでしょう?
 VBEのメニューの「書式」には「整列」〜「順序」などがありますが、
 「書式設定」や「配置」が見あたりません。
 右クリックでも「切り取り」〜「背面へ移動」などがありますが、やはり
 「書式設定」や「配置」は見あたりません。

 2010 も使えるのでやってみましたが、「図形の書式設定」への行き方が
 わかりませんでした。メニューや右クリックで出てくる項目は、2003 と
 ほとんど同じようです。

 (ぺぺ)


 説明からは見えなかったのですが、マクロのお話ですか?
 マクロの記録をとれば分かると思いますが、設定は
         VerticalAlignment = xlCenter のようにしてできるとおもうのですが、
 これだと横の位置は HorizontalAlignment なので、見ているテキストボックスが
 同じものかが気になります。

 と書きかけて気がついたのですが、もしかしてユーザフォームのテキストボックス
 でしょうか。
 テキストボックスと名のつくものは多いので、お互いに正確に特定できるように
 しないと混乱しますね。

 ユーザフォームだと確かに、縦の位置コントロールは見当たらないですね。
 (Mook)


 >もしかしてユーザフォームのテキストボックスでしょうか。

 そうなんです。

 >テキストボックスと名のつくものは多いので、お互いに正確に特定できるように
 >しないと混乱しますね。

 すみません、そこまで気が回りませんでした。そういわれれば、確かにシートに
 貼り付けるテキストボックスもありますね。そっちの方では「テキストボックスの書式設定」
 などが確認できました。

 >ユーザフォームだと確かに、縦の位置コントロールは見当たらないですね。

 やっぱり無理なんでしょうか。

 (ぺぺ)


 >やっぱり無理なんでしょうか。

 うん、残念ながら、プロパティでは無理。
以下のようにすれば、あたかも縦位置の真ん中にあるように見せることはできるけど。
・本来のテキストボックスの位置にラベルを配置。高さは若干高めに。
・このラベルのキャプションを消し、SpecialEffectを 2(Sunken)、BackColorをテきストボックスに使われているものに。
・ラベルに上にラベル縦位置の中間になるようにテキストボックスを配置。SpecialEfect を 0 (Flat)

 某掲示板で、既に配置されているTextBox1に対して動的にラベル生成し、対応するものが紹介されていた。
著作権(?)の関係があるので本来はURL紹介が妥当だけど、URLを忘れたので、その時にコピったコードを。
(文字が若干小さくなるかな?)

 Private Sub UserForm_Initialize()
    Dim dbox As MSForms.Label
    Set dbox = Controls.Add("Forms.Label.1")
    With TextBox1
        .Height = 18: .MultiLine = False '念のため
        dbox.Top = .Top
        dbox.Left = .Left
        dbox.Height = .Height
        dbox.Width = .Width
        dbox.BackColor = .BackColor
        dbox.SpecialEffect = fmSpecialEffectSunken
        dbox.ZOrder 1 'fmBottom
        .SpecialEffect = fmSpecialEffectFlat
        .Width = .Width - 3
        .Height = .Height - 4
        .Left = .Left + 1.5
        .Top = .Top + 4
    End With
 End Sub

 (ぶらっと)


 ぶらっとさん、ありがとうございます。

  なるほど、テキストボックスのような見かけのラベルの上に、フラットにした
 テキストボックスを置いてやることで、縦位置が調整できるのですね。「目から
 鱗」ものです。

  あとの方のマクロは、なんだかすごいですね。
  今やりたいのは、ちょっと見栄えをよくしたいという程度なので、ここまで凝った
 ことをしようとは考えていませんでした。
  時間があったら研究してみたいと思います。

  それにしても、いろんなやり方があるものですね。参考になります。

 (ぺぺ)

 ぷらっとさんのコードで示されたような背景としてラベルとフラットなテキストボックス
 を使い、VBEにて、ちょうど縦方向に中央揃えされるようにユーザーフォームに作成してみてください。
 作成したラベルとテキストボックスをグループ化してください。

 これをツールボックスに登録(グループ化されたラベル&テキストをドラッグし、
 ツールボックスにドロップする)することも可能です。
 このようにすれば、再利用も出来そうですねえ!!

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.