質問のタイトルからして、何の質問という感じで
すみません。TextBox1.TextをTextBox10.Textまでつくり
cells(1,1)=TextBox1.Text
l
l
cells(1,10)=TextBox10.Text

各セルにTextBoxの内容を書き込みたいのです。セルとテキストの変化
部分をそれぞれ、変数1、変数2とおいてFor~Next なりDo until loop
なりで、変数を変化させようと思いました。cells(1,変数1)の指定
は上手くいったのですが、TextBox変数2.Textの指定がうまくいきません。
TextBox変数2.Textについてどのように変数の設定をしたら、良いでしょうか?
そもそも、TextBox1.Textの数字部分【1】は変数に指定できないのでしょうか?

すみませんが教えてください。EXCEL2000を使っています。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/08/06 17:28

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

この回答への補足

すみません。教えた頂いた内容を元に、試行錯誤したのですがうまくアイデアが
浮かびませんでした。
実は、
(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個書いています。

度々お手数をおかけいたします。

補足日時:2002/08/06 13:05
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/08/06 12:33

》そもそも、TextBox1.Textの数字部分【1】は変数に指定できないのでしょうか?



その通りです。

簡単なのは、「Controls コレクション」を使う事です。詳しくはヘルプを見てください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/08/06 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • あおくび大根で歳時記:第22話「わかあゆ」

    わびさびの心を愛する、あおくび大根たちが四季折々を和にくらす日常を豆知識と共にまったりとお届けします。

  • あおくび大根で歳時記:第21話「大根の衣替え」

    わびさびの心を愛する、あおくび大根たちが四季折々を和にくらす日常を豆知識と共にまったりとお届けします。

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ