いつもお世話になってます。
さっそく質問ですが、
ActiveX EXE側にタイマーとテキストボックスを持っています。
VB側のフォームにテキストボックスがあります。
VBからActiveX EXEを起動させ、決まった時間(例えば5秒おき)にVBのテキストボックスに
ある文字を表示させる、ということがしたいです。
条件として、
VB側の動きは、
(1)最初のActiveXを起動
(2)ActiveXのSetとNothingだけしかしない
しかしません。
なので、ActiveXからは「RaiseEvents」はしません。
ActiveX側で、タイマーイベント部分に、
ActiveXのフォームのテキストボックス.text = "文字"
set △△ = ActiveXのフォームのテキストボックス
(△△は、ActiveXのフォームのテキストボックスとしてセットされています。)
のように、プログラムしてみたのですが、
VB側のテキストボックスに表示できませんでした。
尚、VB側は、ActiveX以外の処理があるので、途中からActiveXを起動させることになります。
この条件で、VBのテキストボックスに文字を表示させることはできますか?
もしできるとしたら、どのような方法がありますか??
まだネットや本で調べ途中なので、もし何か参考ページがありましたら教えていただきたいです。
よろしくお願いします。
No.4
- 回答日時:
piyo2000様より、Object型で渡さないとエラーになるとのご指摘がございましたので、ご参考下さい。
(piyo2000様、ご指摘ありがとうございます。)
私が考えていたのは、ActiveX EXE側で
Private vbTextObj As Object
Public Property Let TextObject(ByVal newValue As Object)
Set vbTextObj = newValue
End Property
などとしておいて、VB側でActiveX EXEを起動(New)後に
(ActiveX EXE Object名).TextObject = Text1
としておけば、ActiveX EXE側のタイマルーチン内で
(宣言先).vbTextObj.Text = ~
とすることで、ActiveX EXE側からVB側のTextBoxへ表示できるのではないでしょうか。
No.3
- 回答日時:
#2です。
ごめんなさい。
>Private sub setTextBox(oText As Object)
は
>Public sub setTextBox(oText As Object)
じゃないといけないですね。すみません。
No.2
- 回答日時:
#1さんの方法を試してみましたが、TextBoxを渡すとコンパイルエラーになりますね(^^;
# Objectで渡せばいいですけど。
>具体的なプログラムがどうも分からなくて
ActiveX Exeのコントロールクラス(Newするときに指定するクラス)に
Private m_oText As Object
...
Private sub setTextBox(oText As Object) ' TextBoxではコンパイルエラー
set m_oText = oText
End sub
のように、ActiveX Exe側に標準ExeのTextBoxオブジェクトを渡すメソッドを定義しておきます。
また、ActiveX Exeの(Timerがある)フォームに
Public Event TimeUp()
とイベントを定義して、Timerイベントでは
Private Sub Timer1_Timer()
RaiseEvent TimeUp
End Sub
とでもしておきます。
そしてコントロールクラスでWithEventsでフォームオブジェクトを定義し、Newした直後にsetTextBox()を呼びます。
private sub oForm_TimeUp() 'このプロシージャはWithEventsによるイベント
if Not (m_oText is nothing) then
m_oText.Text = Now '現在時刻
end if
end sub
のように書けばいいのでは。
この方法はTimerイベントをTimeUpイベントに置き換えているだけですので(コントロールクラスでTimerイベントを取得するため)、少々まどろっこしいかも。
コントロールで受け取ったm_oTextをそのままフォームのメソッドなりプロパティ変数なりに入れて表示処理自体はTimerイベントでやってもいいですね。
Object渡しが嫌ならhwndを渡してSetText()APIを使うという手もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ユーザーフォームのテキストボ...
-
VBAでユーザーフォームを再表示...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
エクセルVBAのフォームを最...
-
[VB6] フォームを閉じる方法に...
-
Access VBA コントロールの参照...
-
ユーザーフォーム上に現在日時...
-
C#で3つのプログラムができま...
-
エクセルのVBAでユーザーフォー...
-
モーダルフォームとモードレス...
-
Hideについて(.NET)
-
VBA ユーザーフォームを速く開...
-
(Excel+VBA)ユーザーフォームの...
-
任意のフォームが表示されてい...
-
Accessで、一つのフォーム画面...
-
Form_Load と Form_Activate の...
-
プログレスバーの表示方法
-
コントロールの存在確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
Microsoft Formsの「個人情報や...
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
Hideについて(.NET)
-
モーダルフォームとモードレス...
-
ユーザーフォーム上に現在日時...
-
MSGBOXのフォント大きさ変更
-
Excelにて、ユーザーフォームで...
-
コントロールの存在確認
-
ユーザーフォームのラベルに時...
-
VBA(エクセル)のユーザー...
-
エクセルVBA フォーム上でOnkey...
おすすめ情報