[[20200810155356]] 『ユーザーフォームとそのコントロールを文字列(変』(おっとう) ページの最後に飛ぶ

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

 

『ユーザーフォームとそのコントロールを文字列(変数)を使って参照するには』(おっとう)

UserForm1のTextBox1はUserForm1.Controls("TextBox1")で指定できますがUserform1も変数で参照するにはどうしたらよろしいでしょうか。

< 使用 Excel:Office365、使用 OS:Windows10 >


ご参考まで。
http://officetanaka.net/excel/vba/tips/tips103.htm

(γ) 2020/08/10(月) 16:15


ありがとうございました。
Dim myForm As String
    myForm = "UserForm1"
    UserForms.Add(myForm).Show
でShowすることはできますが、
UserForms.Add(myForm).Controls("TextBox1")のような使い方ができないようです。
(おっとう) 2020/08/11(火) 07:23

 横からすみません。
 どういう使い方を想定されているかわかりませんが、
 >UserForms.Add(myForm).Controls("TextBox1") 
 これだとインスタンスが生成されて、すぐに消えてしまうから、2行に変更しても反映されないだけだと思います。
 例えば、Object型に入れてしまうとか、Withでくくるなどすれば対応できるのではないでしょうか?

    Sub test()
        Dim UFname As String
        Dim UFobj  As Object
        UFname = "UserForm1"
        Set UFobj = UserForms.Add(UFname)
        'UFobj.TextBox1.Text = "a"
        UFobj.Controls("Textbox1").Text = "b"
        With UserForms.Add(UFname)
            .Controls("Textbox1").Text = "c"
            .Show
        End With
        UFobj.Show
    End Sub

(稲葉) 2020/08/11(火) 09:10


稲葉様
さっそくありがとうございました。
思っていたような使い方ができそうです。
勉強になりました。
感謝です。
(おっとう) 2020/08/11(火) 11:10


 質問者の意図が良く解らないので、
 VBAProject をループさせて探すか、
 直に
 Set UFM1 = Userform1
 とかするぐらいかと。
 これなら、変数をつかってユーザーフォームを使うに一致するし。
 まあ、質問者自体が思いつきでそう思っているだけでは。

 単に興味本位なだけに思われますので、
 やめておいた方が良いとおもますけどね。

(Why) 2020/08/11(火) 11:59


 解決されたようですが、いったいどういう使い方されてるか、教えてもらえませんか?
 既知のユーザーフォームなら、Whyさんのおっしゃるように最初から指定すればいいだけだと思いますし、
 それができない理由も気になります。

(稲葉) 2020/08/11(火) 12:44


コメント返信:

[ 一覧(最新更新順) ]


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