半角チルダ

ExcelVBA、その他。
覚え書きや、補足資料などのスクラップブック。
end-u(1037781)

■UserForm作成コード

2008-03-04 23:30:00 | VBA Tips
唐突ですが、『プログラムで UserForm を操作する方法』を参考にして、デザインしたUserFormをVBAから作成する事ができます。

Sub try()
  Const vbext_ct_MSForm As Long = 3
  Const mg As Single = 1
  Const w As Single = 100
  Const h As Single = 20
  Dim iw  As Single
  Dim ih  As Single
  Dim x  As Single
  Dim y  As Single
  Dim i  As Long
  Dim j  As Long
  Dim v, z

  v = VBA.Array(10, 10, 10, 10)
  z = VBA.Array("Forms.Label.1", _
         "Forms.TextBox.1", _
         "Forms.ComboBox.1", _
         "Forms.CommandButton.1")
  With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
    iw = .Properties("Width") - .Properties("InsideWidth")
    ih = .Properties("Height") - .Properties("InsideHeight")
    .Properties("Width") = iw + (mg + w) * (UBound(v) + 1) + mg
    .Properties("Height") = ih + (mg + h) * Application.Max(v) + mg
    With .Designer
      For i = 0 To UBound(v)
        For j = 1 To v(i)
          With .Controls.Add(z(i))
            .Left = mg + x
            .Top = mg + y
            .Width = w
            .Height = h
            y = y + mg + h
          End With
        Next j
        x = x + mg + w
        y = 0
      Next i
    End With
  End With
End Sub

(実行後)


ただ、VBAからVBProjectにアクセスするには、何かとセキュリティ上の問題があるため
ExcelXP以降はデフォルトの設定ではエラーメッセージが表示されます。



ですので事前にセキュリティの設定変更が必要です。




(「Visual Basic プロジェクトへのアクセスを信頼する」にチェックする)

一般ユーザーにはあまり必要ないので、セキュリティ変更はしないほうが良いと思います。
UserFormを使って、ちょっとした入力支援Appliなどを作成したりする方には、コーディングの効率化を図るヒントになるかもしれません。
私はあまりUserForm使わない人なので...掲示板用コードテストくらいしか用途ないですけど。

Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ■マウスカーソルに合わせShap... | TOP | ■UserForm.Imageのサイズ変更... »
最新の画像もっと見る

Recent Entries | VBA Tips