こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

投稿日時 - 2004-09-20 15:38:28

QNo.1009438

困ってます

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

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

投稿日時 - 2004-09-20 19:08:37

お礼

簡単に出来てしまいました。
ブック名とシート名を指定すれば良かっただけとは・・・
数時間考えて出来なかったもので、助かりました

投稿日時 - 2004-09-20 20:29:17

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

a.xlsの"Sheet1"にActiveXのTextBoxを置き、b.xlsの標準モジュールに下記を書いて、a.xls を開いた状態で試してます。(Excel2000)

Sub Test()
Dim ws As Worksheet, myObj As OLEObject
 Set ws = Workbooks("a.xls").Worksheets("Sheet1")
 For Each myObj In ws.OLEObjects
  If UCase(myObj.Name) Like "TEXTBOX*" Then
    MsgBox myObj.Object.Value
  End If
 Next myObj
End Sub

投稿日時 - 2004-09-20 17:43:23

お礼

ありがとうございました
単純なことで悩んでました

投稿日時 - 2004-09-20 20:32:26

あなたにオススメの質問