• ベストアンサー

マクロ初心者です。エクセルのあるシートにテキストボックスが2個張り付い

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

Active X コントロールの場合は、Index はあるのですが、コレクションで指定できませんから、以下のような曖昧なコードから、選び出すことになります。一種類しかないのなら、そのままOLEObjectsから導きだしても可能です。 Index は、左上にあるものから、右下に順に番号がふられます。(移動すれば別です) '//ActiveX Sub Test1()  Dim obj As Object  With ActiveSheet    For Each obj In .OLEObjects ''いろんな種類がある場合は、以下のようにしないと区別つかない。     If TypeOf obj.Object Is MSForms.TextBox Then      ''obj.Select 'あまり働いていない。      MsgBox obj.Index & " " & obj.Name     End If    Next  End With End Sub   '//オートシェイプ Sub Test2()  Dim o As Object  With ActiveSheet   For Each o In .TextBoxes 'VBA側では、隠しオブジェクになっています。    o.Select    MsgBox o.Index & " " & o.Name   Next  End With End Sub

MyPudding
質問者

補足

助言ありがとうございます。 Test1()では何も表示しませんでした。 Test2()ではTextBoxクラスのindexプロパティを取得できませんというエラーメッセージが出ました。

関連するQ&A

  • 連番を変更するマクロ

    エクセルのあるシートにテキストボックスが100個張り付いてます。 番号は1から100です。 このテキストボックスの番号を21から120に変更するマクロを教えて下さい。 (テキストボックスの番号とは、テキストボックスを選択した時に名前ボックスに表示される番号のことです)

  • エクセルマクロ_テキストボックスをシートに反映

    エクセルマクロ初心者です。(2003使用_ユーザーフォーム) ユーザーフォームにリストボックスとテキストボックスを配置しています。リストボックス(Sheet1データを反映)の管理番号データを取得し、Sheet2のA1最終行に記載するところまではできました。 その後、もしテキストボックス1に日付型データ(回答日)があれば、先ほどの管理番号取得行の列のとなり(B列)に記載、空白であれば記載しない。 もしテキストボックス2に日付型データ(出荷予定日)があれば、先ほどの管理番号取得行の列のとなり(C列)に記載、空白であれば記載しない。 もしテキストボックス3にデータ(数量)があれば、先ほどの管理番号取得行の列のとなり(C列)に記載、空白であれば記載しない。 としたいのですが、offsetを使おうとしたのですが、うまくできませんでした。 すみませんが、どなたかご親切な方ご教授よろしくお願いいたします。 (エクセルSheet1=データベース) C5  D5 管理番号   品名       アカ12    りんご       アオ56    みかん       クロ34    なし       クロ89    すいか       アオ12    もも (エクセルSheet2=記入シート) 管理番号 回答日      出荷予定日 数量 アカ12 9月20日       9月23日 100 アオ56            9月21日 800 ↑回答日の記載はない場合もあります。 リストボックス1で選んだ管理番号取得行に一行に内容を表示させたいと思っています。 Private Sub UserForm_Initialize() With ListBox1 .ColumnWidths = "0;0;50;50" .ColumnCount = 4 .RowSource = "Sheet1!A5:D" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row End With End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2) End With (ユーザーフォーム配置)   リストボックス1   テキストボックス1(回答日=9/20)   テキストボックス2(出荷予定日=9/21) テキストボックス3(数量=900)  テキストボックス4(コメント=送り先一部変更あり) すみませんが、どなたかご親切な方ご教授よろしくお願いいたします。

  • テキストボックスを作成するマクロで

    エクセルでテキストボックスを50個表示させるマクロを作成する場合、テキストボックスの番号は連番になると思いますが、最初の番号を指定することは可能でしょうか? *この場合のテキストボックスの番号とはマクロ上の以下のような番号のことです。 ActiveSheet.Shapes("Text Box 8").Select

  • アクセスのフォームでテキストボックスを順番に選択

    任意の名前がついたテキストボックスがあります。 これをVBAを使い、1つずつ選択することは可能でしょうか? 例えばエクセルのシートだったら Sheets(1) みたいな感じで数字も使えますが、アクセスのフォームではできないのでしょうか? さらに取得していったテキストボックスの値を取得、ということもしたいです。 Access2000です。

  • テキストボックスの番号のことで

    エクセルでテキストボックスを使用するマクロのスクリプトを調べてみると、ActiveSheet.Shapes("Text Box 1").Select等の文からテキストボックスの番号が分かりますが、マクロを調べることなくシート上からテキストボックスの番号を知ることはできるのでしょうか?

  • エクセルのワークシート上のテキストボックスのずれ

    エクセルのワークシート上に(ユーザーフォームではなく) コントロールツールボックスからテキストボックスをいくつか作成しました。 そのテキストボックスをそれぞれ選択(アクティブ?マウスオーバー?)すると テキストボックスの大きさが微妙に変化してしまうのですが、回避する方法はないでしょうか? 微妙というのは、テキストボックスの下・右にそれぞれ枠線1本分ほどです。 エクセルのバージョンは2003です。 どうぞよろしくお願いいたします。

  • エクセル テキストボックスの内容を削除するマクロ

    シート上の任意のセルにカーソルがいたとして、マクロを実行するとテキストボックス1の事前の内容を全部消去してそのままそのテキストボックスの最初から入力可能な状態にするマクロを教えてください。

  • テキストボックスの名前

    エクセルシートにランダムに貼り付けられたテキストボックスの名前を調べるマクロを教えてください。 環境Windows XP Office 2003 目的 Sheet1にテキストボックスがたくさん貼り付けれられている。 テキストボックスの数と名前を知りたい。

  • エクセルのテキストボックスに関するマクロ

    テキストボックスが100個あって(番号は1から100)、文字が入力されているものと空白のものが混ざっています。 文字が入力されているテキストボックスに関しては内部を赤く塗りつぶす、というマクロを教えて頂きたいのですが。

  • エクセルマクロでシート内にある画像のみを選択する

    エクセルマクロでシート内にある画像のみを選択する ActiveSheet.DrawingObjects.Select これだとエクセルのシート内にあるすべてのオブジェクトを選択してしまいます。 テキストボックスなどのオブジェクトは選択せずに、写真などの画像のみを 選択したいのですがどのようにしたらよいのでしょうか。 どうかよろしくお願いいたします。