#14 コントロールのサイズをVBAで操作する

「#13 コントロールの配置をVBAで操作する」ではコントロールの[Top/上位置]プロパティと[Left/左位置]プロパティを変更することによってコントロールの位置を変更しました。サイズを変更する場合にはこれらに替わって[Width/幅]プロパティと[Height/高さ]プロパティを操作します。基本的な考え方は位置を変える場合とまったく同様です。
 
ントロールの「幅を1cm増やす」・「高さを1cm増やす」・「高さを1/2にする」の3つの操作について、サンプルコードを示します。なお、各実行イメージは3つの操作を続けて行ったときのものです。

  Dim frm As Form
  Dim ctl As Control
  Dim sngTmpHeight As Single
  Dim sngTmpWidth As Single
  Dim sngChangeRate As Single
  Dim iintLoop
  Const TWIP_CM = 567    '1cm当たりのTwip値

  '対象フォームをフォームオブジェクト変数にセット
  Set frm = Forms!frmTest

元のサンプルフォーム
'すべてのコントロールの幅を1cm増やす
  sngChangeRate = 1.0 * TWIP_CM

  frm.Painting = False

  For iintLoop = 0 To frm.Controls.Count - 1
    Set ctl = frm.Controls(iintLoop)
    ctl.Width = ctl.Width + sngChangeRate
  Next iintLoop

  frm.Painting = True
幅を1cm増やしたサンプルフォーム
'すべてのコントロールの高さを1cm増やす
  sngChangeRate = 1.0 * TWIP_CM

  frm.Painting = False

  For iintLoop = 0 To frm.Controls.Count - 1
    Set ctl = frm.Controls(iintLoop)
    ctl.Height = ctl.Height + sngChangeRate
  Next iintLoop

  frm.Painting = True
高さを1cm増やしたサンプルフォーム
'すべてのコントロールの高さを1/2にする
  sngChangeRate = 0.5

  frm.Painting = False

  For iintLoop = 0 To frm.Controls.Count - 1
    Set ctl = frm.Controls(iintLoop)
    ctl.Height = ctl.Height * sngChangeRate
  Next iintLoop

  frm.Painting = True
高さを1/2にしたサンプルフォーム
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved