投稿時間:2003/12/08(Mon) 14:36 投稿者名:AK
Eメール:kuroki@desu.ne.jp
URL :
タイトル:Re: MsFlexGridの列幅変更
> MsFlexGridでたとえば、列に行っているデータの最大幅を列のWidthに設定する方法を > ご存知の方ご教授ください。 > 例えば、1列目で > 1行目に「りんご」 > 2行目に「パイナップル」 > 3行目に「みかん」 > と入っていたら、2行目の「パイナップル」が一番長いデータなので、 > 2行目の幅を1列目のWidthに設定する。
こんにちわ。
一番長いデータを調べても駄目です。
フォントによって文字の幅が変わりますので 文字列自体の幅を調べる必要があります。
下記にサンプルを記述しておきます。
では。
'(*.frm) フォームにMSFlexGridとCommandButtonを追加してください。 Option Explicit
Private Sub Form_Load() Dim ii As Long
'グリッド初期設定 With MSFlexGrid1 .Font.Name = "MS Pゴシック" .Font.Size = 12 .Top = 15 .Left = 5 .Height = 4000 .Width = 4000 .Rows = 27 .Cols = 2 .ColWidth(0) = 300 .ColWidth(1) = 1000 'データ作成 For ii = 1 To 26 .Row = ii .Col = 1 .Text = String(10, Chr(64 + ii)) Next ii End With 'ボタン初期設定 With Command1 Set .Font = MSFlexGrid1.Font .Caption = "幅変更" .Height = 400 .Width = 1000 .Top = 4030 .Left = 15 End With 'フォーム初期設定 With Me .BorderStyle = 1 'グリッドと同じフォントを設定する Set .Font = MSFlexGrid1.Font .Height = 4845 .Width = 4155 End With End Sub
Private Sub Command1_Click() Dim ii As Long Dim lTmp As Long lTmp = 0 With MSFlexGrid1 For ii = 1 To .Rows - 1 .Row = ii .Col = 1 '一番幅の広い文字列を調べ幅を取得する If lTmp < Me.TextWidth(.Text) Then lTmp = Me.TextWidth(.Text) End If Next ii '幅を設定する(余白を考慮して100プラスする) .ColWidth(1) = lTmp + 100 End With End Sub
|