マルシェル新規登録で5000円分当たる

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

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

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

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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

エクセルを新規に開きました。


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

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

お礼日時:2004/09/20 20:29

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

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

お礼日時:2004/09/20 20:32

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

このQ&Aを見た人はこんなQ&Aも見ています

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

このQ&Aと関連する良く見られている質問

Qテキストボックスの値を変数に代入したい。

テキストボックスの値を変数に代入したいのですが、どういうコードを書けばいいですか?
例えばTextBox1の値を変数xに代入したいのですが。

Aベストアンサー

VBでは処理の順番は、上から順に行います。(VBだけでなく殆どのプログラム言語でも同じ)

質問者のコードは
計算をしてから、変数に値を入れている。

QExcel VBAで、ユーザーフォームの値を、モジュールで使用したい。

VBA初心者です。(おそらく)基本的な質問で、申し訳ありません。
ユーザーフォーム1には、テキストボックス1とコマンドボタン1が配置されているとします。

Sub TEST ()
Dim N
Userform1.Show
MsgBox N
End Sub

Private Sub CommandButton1_Click()
Dim N
N = TextBox1.Text
UserForm1.Hide
End Sub

Sub TESTを実行した時に、ユーザーフォーム1からNの値を引き継ぐには、どうしたら良いのでしょうか?よろしくお願いします。

Aベストアンサー

'モジュールに変数宣言(グローバル変数)
'Public 宣言すると他のモジュールやフォームと
'共有できる変数になります。
Public AA As String

'sample
'A1 を実行する。

Sub A1()
Call A2
AA = InputBox("input", , AA)
End Sub

Sub A2()
AA = InputBox("input", , AA)
End Sub

QEXCEL VBAについて、ワークシート上に置いたTextBoxに値を入れる方法について

すいませんEXCEL VBAについて質問があります。
エクセルのワークシート上にコントロールツールボックスから
テキストボックスを2つ、コマンドボタンを1つ設置する。
アクティブになっているテキストボックスに”goo”という値を入れる。
これをVBAで処理するにはどうしたらよろしいのでしょうか。
ユーザーフォームのテキストボックスであれば
Private Sub CommandButton1_Click()
Dim i As Object
Set i = ActiveControl
If TypeOf i Is MSForms.TextBox Then
i.Text = i.Text & "goo"
End If
Set i = Nothing
End Sub
これでできるはずですが、シート上に置くテキストボックスだと
うまくいきません。
よろしくお願いいたします。

Aベストアンサー

Getfocusイベントで対応しては いかがですか?
例 当該シートに Textbox1 Textbox2 Commandbutton1
が配置されていた場合で考えます。

シートモジュールに

Option Explicit
Private atobj As Object
Private Sub CommandButton1_Click()
  If TypeName(atobj) = "TextBox" Then
  atobj.Text = atobj.Text & "goo"
  End If
End Sub
Private Sub TextBox1_GotFocus()
  Set atobj = TextBox1
End Sub
Private Sub TextBox2_GotFocus()
  Set atobj = TextBox2
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set atobj = Nothing
End Sub

Getfocusイベントで対応しては いかがですか?
例 当該シートに Textbox1 Textbox2 Commandbutton1
が配置されていた場合で考えます。

シートモジュールに

Option Explicit
Private atobj As Object
Private Sub CommandButton1_Click()
  If TypeName(atobj) = "TextBox" Then
  atobj.Text = atobj.Text & "goo"
  End If
End Sub
Private Sub TextBox1_GotFocus()
  Set atobj = TextBox1
End Sub
Private Sub TextBox2_GotFocus()
  Set atobj = TextBox2
End Sub
Pr...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qエクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?

エクセルのVBAでユーザーフォームの中に
テキストボックスとラベルがあります。

ラベルの縦幅とテキストボックスの縦幅は
同じです。(文字1行分くらい)

そのテキストボックスの左隣にラベルを置いて、
項目名的なものを表示させたいと思うのですが
ラベルの値が上に寄っているので、垂直方向に
中央揃えさせたいのですが、設定の仕方が
分からず困っています。

ちなみにエクセルはXPで、VBAは詳しくありません。
詳しくないけど調べながらちょっとずついろいろ
作業しています。

どうぞよろしくお願いします。

Aベストアンサー

文字の上下中央設定は、確かにできませんね。
代案ですが、次のような操作はいかがでしょうか。

1.双方を選択した状態でプロパティを表示し、AutuSize の値を True にする。
2.前回のようにコントロールの位置を上下中央で揃える。
3.各コントロールの長さ(幅)や文字サイズを調整する。

QVBA コンボボックスで選んだ値を取得するには

ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。

コンボボックスのコードで
Private Sub ComboBox1_Change()
moji1 = ComboBox1.Text
Range("A1").Value = moji1
のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。

マクロ1にて、上記と同じ
Range("A1").Value = moji1
というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。

原因をご存知の方はお教えください。

Aベストアンサー

原因については下記を参考にしてください。
http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング