• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA UserForm のご質問)

EXCEL VBA UserFormの使い方|テキストボックスの追加とワークシートへの代入方法

このQ&Aのポイント
  • EXCEL VBA UserFormでテキストボックスを追加する方法と、テキストボックスに入力された値をワークシートに代入する方法について説明します。
  • UserFormのInitializeイベントを使用して、テキストボックスを任意の数だけ追加します。
  • 登録ボタンがクリックされた時に、テキストボックスに入力された値をワークシートの指定したセルに代入します。ただし、一部エラーが発生する可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 >i = nyuryokubox()   この部分は、いずれにしても、参照できませんね。 おそらく、既存のTextBpxで、ボタンで生成するTextBoxの数でしたら、nyuryokubox.Value や.Text プロパティだと思います。それは、配列です。 > For i = 1 To i i は、ループのカウンターに使っているのですから、i 自体は、数値型で、To (定数)ですから、別の変数(例:j = nyuryokubox.value として、For i = To j など)にしないと、ループは完成しません。初歩的なミスだと思います。 それから、TextBoxのプロパティ等を調べてみましたが、マクロから、オブジェクト名を変更できなかったようですから、D1.Text は使えませんね。 Controls("D1").Text 等でしかないようです。 登録_Click() Dim obj As Object Dim i As Long   With Worksheets("keyplan")     For Each obj In Me.Controls     If obj.Name Like "D#" Then 'Dの付いた名前を探す      i = i + 1      .Cells(30, i + 3).Value = Controls("D" & i).Text     End If     Next    End With  End Sub

wind14
質問者

お礼

WindFaller様 ご回答ありがとうございました。  希望通りの結果が得られました。感激・感動です。  ご指導、ご指摘いただき誠にありがとうございました。  まだまだ勉強中ですので、またご質問させていただきますが、  よろしくお願いします。  

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Controls.Addで動的に追加されたオブジェクトは デザイナで追加したコントロールのように直接変数名での参照ができないようです 方法としては UserFormのクラス変数として Dim txt(1 to 3) as MSForms.TextBox などと宣言しておくか .Range("D30").Value = Controls("D1").Text といった具合に Controlsコレクションから間接的なアクセスになるようです

wind14
質問者

補足

  redfox63様 早速ご回答いただきましてありがとうございます。  投稿して良かったと思っています。大変勉強になります。  >.Range("D30").Value = Controls("D1").Text  でやってみたのですが、「オブジェクトが必要です」になってしまいます。  ちなみに、Text→text と頭文字が大文字にならないのも何か不具合の要因でしょうか?  > UserFormのクラス変数として  経験が浅く的外れかもしれませんが、  Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)   Dim txt(1 To 3) As MSForms.TextBox  End Sub 他でもやってみましたが、違います?

関連するQ&A