1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Userform.ListBoxで左寄せ列と右寄せ列を混在させる

Last updated at Posted at 2020-06-09

要点

・ListBoxのTextAlign属性は、3-fmTextAlignRightにする(右寄せをデフォルトに考える)
・左寄せにしたい列のデータ末尾に、列幅から十分溢れるだけのスペースを追加する(補足3参照)

サンプル

左右混在.JPG
第1列と第4列の右端にスペースが追加されている。

補足

  1. 左寄せをデフォルトにした場合、右寄せしたい列では、列幅ぴったりとなるように左スペースを埋めないといけない。フォントやフォントサイズのバリエーションを考えると、やりたくない。Format(foo, "@@@")で右にシフトさせる方法も、結果は同様(フォントによってはうまく並ばない)。

  2. 右寄せをデフォルトにして右スペースを埋める場合、「元のデータの幅+埋めたスペースの幅 > ColumnWidth属性で設定した列幅」であればOK。埋める個数は、適当に大きな数をひとつ決めればいい。溢れたスペースで元のデータが左欄外に押し出されてしまうことはなく、左に寄って止まる。

  3. スペースだけでOKなときもあれば、スペースだけだと無視されて右寄せになってしまうときもある(理由は未判明)。「スペース+何かの文字」で埋めれば、無視されることはない("何かの文字" が列内に表示されないよう、スペース数を調整する)。

  4. スペースの追加は、ベタに & " "(スペースは必要数だけ)とか、& Space(50)& String(50, " ") (50は一例) 等々で。スペースの付加は、地道にFor-In``For-Each``Do-Loopで反復処理する以外はないんじゃないでしょうか。

  5. 表示されるデータを加工してしまうので、レコードを選択して次の作業に使うような場合は、忘れずTrimするとか、ListBoxのBoundColumn属性に指定する列は加工しないとか、そもそもBoundColumnは列幅0にして表示しないとか、しましょう。

  6. Microsoft Office Professional 2016のExcelとOutlook(いずれもバージョン2003)で動作確認済。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?