• ベストアンサー

vbaについて

ユーザーフォームで作ったテキストボックス1とテキストボックス2があります。 テキストボックス1、テキストボックス2にはそれぞれブログラムが書かれています。 テキストボックス1にキーボードから数字を入力してからテキストボックス2にキーボードから 数字を入力します。 本当はテキストボックス1を入力して、テキストボックス2を入力した後、エンターを押して二つのプログラムを同時に動かしたいのですがどうすればいいでしょうか? テキストボックス2のエンターイベントも試しましたが、全然ダメでした。 分かりにくい文章で申し訳ありませんが、教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.2

回答No.1さんの書いている通り、同時実行というのは不可能です。 コードは左から右、上から下へ実行されますので。 何をどうしたいのか良く分かりませんが、 複数実行コードを書く必要があるのならVBAでは無理でしょう。 で、同時ではありませんが、テキストボックス2を入力後にEnterキーの入力で テキストボックス2のコードからテキストボックス1のコードを呼び出す事は可能です。 コメント類はありませんが、ちょっと検索などすれば、すぐ理解できる内容です。 ’TEXTBOX1のコード Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode <> 13 Then Exit Sub MsgBox "TEXT1で<Enter>を押しました" End Sub ’TEXTBOX2のコード Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode <> 13 Then Exit Sub MsgBox "TEXT2で<Enter>を押しました" Call TextBox1_KeyDown(KeyCode, Shift) End Sub 上記のコードを実行すると、 TEXTBOX1でEnterキーを押すと「TEXT1で<Enter>を押しました」のメッセージだけが出ますが、 TEXTBOX2でEnterキーを押すと「TEXT2で<Enter>を押しました」のメッセージ後に 「TEXT1で<Enter>を押しました」のメッセージが出ます。 結果、TEXTBOX2からTEXTBOX1を呼び出している事になります。 ちなみに、このコードでは呼出を一方から行っているので問題はありませんが、 TextBox2の「Call」をTextBox1にも書いてしまうと無限ループになりますので注意して下さい。 また、Enterキー入力後はフォーカスも移動します。 他に標準モジュールを使う方法もありますね。 >shell関数なるものを使う場合どうすればいいのしょうか? 例えば、エクセルに下記コードを書いて実行すると、メモ帳が起動します。 ※何でもかんでも起動できるからと好奇心で変更して実行しないようにして下さい。  責任は持てません。 Sub Notep() Shell "C:\Windows\Notepad.exe", 1 End Sub これがShell関数です。 簡単に言えば、自分以外のプログラムなどを実行する関数です。 shell関数が分からないのであれば、 出来る限りVBAだけで完結にするのが一番いいと思います。 検証環境:Win XP(SP3) + Excel2007

その他の回答 (1)

  • pa_cotta
  • ベストアンサー率43% (25/58)
回答No.1

テキストボックス1とテキストボックス2にはプログラムコードが書いてあるんでしょうか? 状況がいまいち飲み込めないのですが…。 vbaはp-codeなのでなんちゃってインタプリタになりますので、同時には出来ないんじゃないでしょうか。 先に実行したコードが終了してからもう片方のコードを実行することになりますね。 もし外部ファイルを実行するのであれば、shell関数を使えば非同期で実行は可能です。

mitsssd
質問者

補足

回答ありがとうございます。 テキストボックス1、2にはコードが書いてあります。 shell関数なるものを使う場合どうすればいいのしょうか?

関連するQ&A

  • Excel VBAでの質問です。

    ユーザーフォームでテキストボックスを用いて値を入力するときに、1桁の数字を入力したら何もしなくてもすぐに次のテキストボックスに移動して値を入力できるようにすることはできるんでしょうか。教えてください。よろしくお願いいたします。

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • エクセルVBAで困ってます。

    ユーザーフォームのテキストボックスで入力制限をしたいのですが、制限は桁とかではなく特定の数字です。そこでテキストボックスに入力後チェックをかけるコーディングをしてるつもりなのですがフォーカスが次のテキストボックスへ遷移してしまいます。フォーカスを自分自身へ戻せないものでしょうか。大変困っています宜しくお願いします。

  • エクセルVBAのユーザーフォーム上のテキストボックスについての質問です

    エクセルVBAのユーザーフォーム上のテキストボックスについての質問です。 Aのユーザーフォームの内容をBのユーザーフォームのテキストボックスへ引き継いで、Bのユーザーフォーム上で内容を編集するという仕組みにしたいのです。 Bのユーザーフォームは新規入力もかねたユーザーフォームなので、テキストボックスのイベントにAfterUpdateを使用して、テキストボックスの内容が書き換えられるとデータベースから検索して新規か既存か判断させています。 AのユーザーフォームからBのユーザーフォームのテキストボックスへ引継ぎさせるときにこのAfterUpdateを発生させたくないのですが、Application.EnableEvents=Falseなどを使ってもイベントが発生してしまいます。 また、イベントがどのタイミングで発生するかと、コードをステップで実行させると、このイベントは発生しません。そのために、いきづまってしまいました。 AのユーザーフォームからBに引き継ぐ処理  ユーザーフォームB.Load ---ユーザーフォームBのイニシャライズが実行される  ユーザーフォームB.テキストボックス = ユーザーフォームA.テキストボックス  ユーザーフォームB.Show ちょっと簡単に書きすぎですがこんな感じです。 コードをステップで実行するとユーザーフォームBのAfterUpdateは実行されません。(VBAエディタのバグ?) どなたか回答お願いします。

  • VBAでvlookupみたいに

    いつもわかりにくい質問ないようですみません。 今回もどういっていいわからないので、やりたいことを順を追って 書きますので、教えてください。 質問1) (1)VBAユーザーフォーム1でテキストボックスに入力 例)テキストボックス1・・・1200   テキストボックス2・・・えんぴつ これをエクセルシート1に反映させる。(下のように)    A    B 1 1200 えんぴつ 2   (2)ユーザーフォーム2でテキストボックスに  (1)のテキストボックス1で入力した数字を入力すると、  (1)のテキストボックス2の文字列を自動で反映してくる。 ・・・のように。 もうひとつ。 質問2) エクセルセル内のデータをVBAのテキストボックスに読み込む際、 元のエクセルセルに書式設定をしている場合に、書式ごと読み込むにはどうしたらいいですか? エクセルセル・・・吉田様(様は書式設定) テキストボックスに読み込んだ場合は、「吉田」のみが読み込まれてしまいます。 よろしくお願いします。  

  • VBAユーザーフォーム内のテキストボックスで検索

    http://oshiete.homes.jp/qa3451770.html こちらで質問した者なのですが (benelli様ありがとうございました) VBAでユーザーフォームでの検索を作成し このユーザーフォーム内にテキストボックスを作成して そのテキストボックスに入力した数字を検索できるようにしたいです。 よろしくお願い致します。

  • エクセル VBA 

    エクセルのユーザーフォームのチェックボックスについて 教えて下さい。 現在チェックボックスが15個あるのですが 例えばテキストボックスが2個あり テキストボックス1に数字の2 テキストボックス2に数字の6 を入れ、コマンドボタンを押すと チェックボックスの2から6にまとめてチェックが入るようなコードが組みたいです。 宜しくお願いします。

  • エクセルVBAで別のユーザーフォームに入力したい

    こんにちは! ユーザーフォーム1と2があって、ユーザーフォーム2上のテキストボックスで入力したデータをユーザーフォーム1のテキストボックスに入力したいのですが、どのようにすればよいでしょうか? アドバイスの程よろしくお願いいたします。

  • VBA ユーザーフォーム

    ユーザーフォームを作ったのですが、 いくつかあるテキストボックスを enterを押すことで 上から下に順番に移っていくことはできますか?? その方法が知りたいです! よろしくお願いします<(_ _)>

  • VBAでイベントを削除したい

    Access2010を使用しています。 VBAでイベントを削除したのですが、そんな事って可能ですか? 例えば、フォームでテキストボックスのエンターのイベントそのものを削除するとかです。 代案の回答は結構です。

専門家に質問してみよう