No.1ベストアンサー
- 回答日時:
テキストボックスにも種類があります。
図形のTextBox
フォームのTextBox
コントロールツールボックスのTextBox
種類はわかりますか?
図形のTextBoxならIndexを使えば良いと思います。
下記で数を取得できます。
ActiveSheet.TextBoxes.Count
2個しかないのならIndexは、1と2です。
ActiveSheet.TextBoxes(1).Select
ActiveSheet.TextBoxes(2).Select
ただしTextBoxesにはコメントの枠も含まれます。
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
この回答への補足
助言ありがとうございます。
Test1()では何も表示しませんでした。
Test2()ではTextBoxクラスのindexプロパティを取得できませんというエラーメッセージが出ました。
No.2
- 回答日時:
初心者と称しながら、何をしようとするのか。
この課題は、VBAの上級の課題と思います。
やりたいことの総体を示して、識者の批判を仰いではどうですか。
初心者はアイデア・発想そのものが、へんちくりん(難しくしすぎ)のことも多い。
シートにテキストボックスを貼り付けるのは、シートのセルを使うのと根本的には違いが無い。
普通はテキストボックスの名前は、ユーザーか設計者が付ける(つけられたままにして、それを使う)ものです。
それを判らないことにして、逆に調べる側に回るのは、初等・中等解説書などには解説は無いでしょう。
「テキストボックスの番号」というのがインデックス的番号のことなのか、名前の多分後尾につけている
数字のことか。これは設計者がやることだから、質問の文章だけでは読者には判らない
Sub test01()
MsgBox Worksheets("Sheet1").DrawingObjects(1).Name
MsgBox Worksheets("Sheet1").DrawingObjects(2).Name
End Sub
または
Sub test01()
MsgBox Worksheets("Sheet1").OLEObjects(1).Name
MsgBox Worksheets("Sheet1").OLEObjects(2).Name
End Sub
をやってみて、
この(表示)結果をどうしようとするのか、
質問はこんなことではないのか、
補足のこと。
ーーー
シートかフォームのどちらにコントロールを貼り付ける(た)のか
コントロールツールボックスの方かフォームの方のテキストボックスか
なども注記しておいた方が良い。
ーー
>テキストボックスの番号とは、テキストボックスを選択した時に名前ボックスに表示される番号のことです。)
デザインモードの時の話ではないですか。実行モードでは名前ボックスには出ないのでは。
この回答への補足
助言ありがとうございます。
実施したいことを、少し補足します。
実施したいことは、テキストボックスの値を変更したいのですが、テキストボックスの番号が固定ではなく任意に変更されるためテキスボックスを指定できない事に悩んでいます。
現プログラムは
ActiveSheet.Shapes("Text Box 178").Select
Selection.Characters.Text = "1234"
ActiveSheet.Shapes("Text Box 188").Select
Selection.Characters.Text = "5678"
としており、変更したい先のText Box の「178」、「188」の値がシート毎に任意に変わりセレクトできません。
よって、何とかしてテキストボックスの番号の値を予め取得し、値を変更したいと思っています。
例えば
A=テキストボックスの値を取得する関数
B="Text Box " & A
ActiveSheet.Shapes(B).Select
Selection.Characters.Text = "1234"
というようなものができれば要件が満たせます。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Word(ワード) 分かる方教えてください。 wordに図を差込して資料を作成してますが その図上の説明したい箇所に①と 3 2022/10/20 20:05
- Word(ワード) ワード2023でテキストボックス内の数字が勝手に変わってしまう 1 2023/02/09 14:47
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- HTML・CSS 【html】検索ボックスを作りたい 4 2022/04/02 17:25
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでテキストボックスの...
-
Word縦書きで左から右への行
-
Accessテキストボックスの未入...
-
ACCESS 値の代入
-
ワード テキストボックスの編...
-
ACCESSのタブオーダー
-
連番を変更するマクロ
-
チェックボックスのON OFFでの...
-
Access レポート印刷するときに...
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
YahooのIDがロックされてしまい...
-
エクセルをACCESSのレポ...
-
Accessで、フォームからフォー...
-
レコードを保存するコード ア...
-
クエリで出来た表にチェックボ...
-
ACCESSでコントロールソースの変更
-
Accessでフィールド名を変数(...
-
「フォームを作成できませんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word縦書きで左から右への行
-
アクセスでテキストボックスの...
-
Access VBAボタンでテキストボ...
-
ユーザーフォーム上にある「テ...
-
VBA 空白テキストボックスカウント
-
チェックボックスのON OFFでの...
-
Accessテキストボックスの未入...
-
連番を変更するマクロ
-
ACCESS 値の代入
-
openoffice Base の使い方
-
アクセス Dlookup関数の表示が...
-
VBAでテキストボックスに斜線を...
-
indesignでテキストの連結順序...
-
エクセルVBA テキストボックス...
-
Wordについて
-
ACCESSのタブオーダー
-
Access テキストボックスのフォ...
-
エクセルのVBA
-
Access のフォームが自由に作れ...
-
パワーポイントでふりがなをつ...
おすすめ情報