2017-08-08 11 views
0

ユーザーが希望するテキストボックス数に応じてプログラムでテキストボックスを空白のユーザーフォームに追加する関数を作成しようとしています。プログラムで追加されたVBAテキストボックスからデータを保存する

現在、私はこれを行う機能を持っていますが、テキストボックスの値は保存できません。私はあなたに名前を付けることが容易である

Function addtxtbox(number_of_textboxes As Integer) 

Dim option_names As New UserForm2 
Dim names As String 
Dim test As String 
Dim textbox As Object 
Dim submit As Object 

For i = 1 To number_of_textboxes 
    Set textbox = option_names.Controls.Add("Forms.textbox.1") 
    With textbox 
     .Left = 30 
     .Width = 200 
     .Top = 20 * i 
     .Left = 20 
    End With 

    MsgBox (textbox.Name)'used to find the name of the textboxes 

Next 

option_names.Show 

names = "TextBox1" 'correct name of the 1st textbox according to the msgbox above. 
MsgBox (names) 'msgbox is always blank 
test = option_names.names 'Compile error: Method or data members not found 
'test = textbox.TextBox1.Value 'run time error 418 object does not support this property or method 
MsgBox (test) 

End Function 
+0

あなた 'UserForm2'内のコードは何ですか? (私は 'addtxtbox 4'を呼び出す' Click'イベントと、 'Me.Unload'を単に行った' Click'イベントという空白のUserForm2を持つUserForm1を作成しました。それは正しく4つのテキストボックスを追加し、2番目のフォームを表示し、最初のテキストボックスに何かを入力してからフォームをクリックした後、 '' TextBox1 "'メッセージが表示された 'addtxtbox'関数に戻り、 'test = option_names.Controls(names)'、テキストボックスに入力された値が表示されました) – YowE3K

+0

私のuserform2のコードは、コマンドボタン付きの空のuserformです。コマンドボタンがYowE3K @何のコード – foch

+0

がないことを私はあなたのアドバイスを取り、<テスト= option_names.Controls(名)>を使用してから 「プライベートサブCommandButton1_Click() Me.Hide End Subの」 以外のコードを持っていますコードテキストボックスデータが表示されました。ありがとうございました!!! – foch

答えて

0

しかしそれらのどれもが、(問題のテキストボックスをプログラムで追加されなかったが、別々のコードで前に働いて、同じ方法にもかかわらず)動作するようには思えない、いくつかの方法をテキストボックスを参照しようとしています予測可能な順序でテキストボックス:

For i = 1 To number_of_textboxes 

    Set textbox = option_names.Controls.Add("Forms.textbox.1") 
    With textbox 
     .Left = 30 
     .Width = 200 
     .Top = 20 * i 
     .Left = 20 
     .Name = "dynamic_" & i '<<<<<<< name the textbox 
    End With 

    MsgBox (textbox.Name)'used to find the name of the textboxes 

Next 

今、あなたはのようなものを使用することができます。

For i = 1 To number_of_textboxes 

    MsgBox "Textbox# " & i & " has value '" & _ 
      Me.Controls("dynamic_" & i).Text & "'" 

Next 
+0

ありがとうございます! Me.Controlsが必要だったので、テキストボックスの名前を付けても便利なアイデアでした。私は非常に助けてくれてありがとう! – foch

関連する問題