[[20090330114349]] 『ユーザーフォームのコントロール名の表示』(ign) ページの最後に飛ぶ

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

 

『ユーザーフォームのコントロール名の表示』(ign)

 いつも参考にさせて頂いております。
 1つのファイル内にいくつかのユーザーフォーム内があり、
 それぞれテキストボックやチェックボックスなど複数配置されております。
 今回、そのコントロールとコードを印刷してファイルに閉じておきたいと思って
 いるのですがテキストボックスやコマンドボタンなどのValueやcaptionを
 コントロールの名前に全ておきかえて印刷するとユーザーフォームとコードを
 印刷した際、わかりやすいかなと思っています。
 そこで、テキストボックの場合はValueをそれ以外はCaptionへそれぞれの
 コントロール名をマクロで一発で変更する方法があればご教示願います。
 WinXP エクセル2003


 それぞれのユーザーフォームInitialize()でValueやCaptionを指定して、
 SHOWした後に、画面をキャプチャーすればいかがでしょうか?
  
   (SHIOJII)


 これ、本気でやると結構大変ですよ!!
 でも、あったら、便利なツールですね!!

 まず、仕様書をきちんと記述することから始めてください。

 コンボボックスは、Textですか?
 リストボックスは? イメージコントロールは?
 スピンボタンは? スクロールボタンは? どのような仕様にしますか?

 コントロールの名前の変更なら、Vbprojectを操作することで実現できます。

 最初にExcelにて、「ツール」---「マクロ」----「セキュリティ」とクリックして、
 セキュリティ ダイアログを表示させます。

 信頼のおける発信元 タブにて、「Visual Basic プロジェクトへのアクセスを信頼する」にチェックを
 入れてください。

 あるユーザーフォーム(Userform1)には

 テキストボックス(TextBox1)のValueプロパティに txt1
 ラベル(Label1)のCaptionに lbl1
 チェックボックス(CheckBox1)のCaptionに chk1
 コマンドボタン(CommandButton1)のCaptionに btn1

 と設定されていたとします。

 標準モジュールに

 '==========================================================================
 Sub test3()
    Call change_form(ThisWorkbook, "userform1")
 End Sub
 '==========================================================================
 Sub change_form(bk As Workbook, frmnm As String)
    Dim ctl As msforms.Control
    On Error Resume Next
    With bk.VBProject.VBComponents(frmnm)
       If .Type = 3 Then
          For Each ctl In .Designer.Controls
              Select Case TypeName(ctl)
                 Case "TextBox", "ComboBox"
                   ctl.Name = ctl.Text
                 Case "CheckBox", "CommandButton", "Label", "OptionButton", "Frame"
                   ctl.Name = ctl.Caption
              End Select
          Next ctl
       End If
    End With
    set ctl=nothing
    On Error GoTo 0
 End Sub

 でtestを実行してみてください。

 ValueやCaptionの内容がそれぞれのコントロール名に変更されるはずです。

 コードを参考にして、Forms2.0 Object Library 
 に含まれるコントロールぐらいは、対処できるようにコードを追加してください。

 上記のようなコードでコントロール名の変更は出来ますが、コントロール名の変更をコードにも
 反映させるとなると、面倒な処理をしなければなりませんね!! 大変です。

 検討してみてください。

 ichinose


 追伸

 >あるユーザーフォーム(Userform1)には
 >テキストボックス(TextBox1)のValueプロパティに txt1
 >ラベル(Label1)のCaptionに lbl1
 >チェックボックス(CheckBox1)のCaptionに chk1
 >コマンドボタン(CommandButton1)のCaptionに btn1
 >と設定されていたとします。
 と申し上げたのは、Userform1.Show 等でユーザフォームを表示させて 手動入力または、
 コード等でTextプロパティやCaptionプロパティを設定する ということではありません。

 VBEにて事前設定でユーザーフォームにTextプロパティやCaptionプロパティに変更する名前を設定する、

 ということです。表現が曖昧だったので追加記述しました。

 ichinose

コメント返信:

[ 一覧(最新更新順) ]


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