• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Textbox1.textについて)

TextBox1.TextからTextBox10.Textまでのセルに書き込みたい

このQ&Aのポイント
  • TextBox1.TextからTextBox10.Textまでの内容をExcelのセルに書き込みたい方法を教えてください。
  • 指定した変数を使用して、ForループやDo-Whileループを使いながら、TextBox1.TextからTextBox10.Textまでの内容をExcelのセルに順番に書き込む方法を教えてください。
  • EXCEL2000を使用していますが、TextBox1.Textの数字部分を変数に指定することはできますか?また、TextBox2.Textについても変数の設定方法を教えてください。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

書いてみましたが、シート上のコントロールツールボックスのテキストボックスでしょうか。 一番面倒な場合かもしれませんね。 今から出かけますので、数日間連絡できません。ご容赦を。 補足を反映したつもりですが、時間がなくて推敲不足です。別法もありそう?(Excel2000です) ↓ Sub Test02()   Dim ws1 As Worksheet 'ワークシート1   Dim ws2 As Worksheet 'ワークシート2     Set ws1 = Worksheets("Sheet1")     Set ws2 = Worksheets("Sheet2")   Const y0 = 2   Dim myTxt As OLEObject 'TextBox   Dim myTxt2 As OLEObject 'TextBox   Dim txtNo As Integer 'テキストボックスの番号   Dim txtNo2 As Integer 'テキストボックスの番号   Dim colNo As Integer '列   'テキストボックス11~20をクリア   For Each myTxt2 In ws1.OLEObjects     If TypeName(myTxt2.Object) = "TextBox" Then       txtNo2 = Application.Substitute(myTxt2.Name, "TextBox", "")       If 11 <= txtNo2 And txtNo2 <= 20 Then         myTxt2.Object.Text = ""       End If     End If   Next   '比較してセルとテキストボックスの値を更新する   For Each myTxt In ws1.OLEObjects     If TypeName(myTxt.Object) = "TextBox" Then       txtNo = Application.Substitute(myTxt.Name, "TextBox", "")       If 1 <= txtNo And txtNo <= 10 Then         ws2.Cells(txtNo + y0, 3) = ""         If myTxt.Object.Value = Val(ws1.Cells(txtNo + y0, 2)) Then           ws2.Cells(txtNo + y0, 3) = ws1.Cells(txtNo + y0, 3)           'テキストボックス11~20の更新           For Each myTxt2 In ws1.OLEObjects             If TypeName(myTxt.Object) = "TextBox" Then               txtNo2 = Application.Substitute(myTxt2.Name, "TextBox", "")               If txtNo2 = txtNo + 10 Then                 myTxt2.Object.Text = ws1.Cells(txtNo + y0, 3)               End If             End If           Next         End If       End If     End If   Next End Sub

yokoneco
質問者

お礼

すっごーーーーーーーーーーーーーーーーい!! 度々すみません。感涙です!! ううう。みずしらずの私のような やからに、お出かけ前にすみません。 しかし、このプログラムを理解するために、少し勉強します。 まだ、うまく飲み込めないところがありますので。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

VBと違って、VBAではコントロール配列が使えません。対応方法としては、  1.Collectionオブジェクトを作る  2.WithEvents(クラス)を利用  3.直接コントロール名(テキストボックス名)を利用 が考えられます。 この質問では、TextBox1~TextBox10となっているので、3のテキストボックス名を使ってみます。 テキストボックスはシート上にあってもユーザーフォーム上にあっても同じ考え方でできるでしょう。 2については、  『VBAのフォームでTextBoxがいっぱいある時』    http://www.okweb.ne.jp/kotaeru.php3?q=261042 を参考にして下さい。 標準モジュールに貼り付け ↓ Sub Test01()   Dim myTxt As OLEObject 'TextBox   Dim txtNo As Integer 'テキストボックスの番号   Dim colNo As Integer '列   'アクティブシートのオブジェクトを調べる   For Each myTxt In ActiveSheet.OLEObjects     'テキストボックスだったら     If TypeName(myTxt.Object) = "TextBox" Then       'TextBox名の数値部分を取り出す       txtNo = Application.Substitute(myTxt.Name, "TextBox", "")       'TextBox1~TextBox10だったら       If 1 <= txtNo And txtNo <= 10 Then         '変数1=変数2 にした         colNo = txtNo         'セルに書き出す         Cells(1, colNo) = myTxt.Object.Value       End If     End If   Next End Sub

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=261042
yokoneco
質問者

お礼

VBAを始めたばかりの初心者でこれを理解するのにもう少し自分で勉強の必要 があるかと思います。詳細なご説明どうもありがとうございました。 参考にさせて頂きたいと思います。

yokoneco
質問者

補足

すみません。教えた頂いた内容を元に、試行錯誤したのですがうまくアイデアが 浮かびませんでした。 実は、 (1)TextBox1.Textに入力した内容をWorksheets("sheet1").Cells(Y, 2) と比較する。 (2)内容が一致していたらWorksheets("sheet2")のCells(Y, 3)にWorksheets("sheet1")のCells(Y, 3)情報をセットする。 (3)さらにTextBox11.TextにWorksheets("sheet1")のCells(Y, 3)情報を表示させるようにしたかったのです。 For Y = 3 To 10 X = Worksheets("sheet1").Cells(Y, 2) Like TextBox1.Text If X = True Then Worksheets("sheet2").Cells(Y, 3)=Worksheets("sheet1").Cells(Y, 3) TextBox11.Text = Worksheets("sheet1").Cells(Y, 3) End If Next 次にTextBox2.TextはTextBox12.Text 次にTextBox3.TextはTextBox13.Text とTextBox10.TextはTextBox20.Textまで同様のことをやらせたかったのです。 TextBoxの数字が変数にならないので、同様のプログラムを10個書いています。 度々お手数をおかけいたします。

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

》そもそも、TextBox1.Textの数字部分【1】は変数に指定できないのでしょうか? 》 その通りです。 簡単なのは、「Controls コレクション」を使う事です。詳しくはヘルプを見てください。

yokoneco
質問者

お礼

どうもありがとうございます。早速ヘルプをみてみます。

関連するQ&A