VB2010で同時処理


VB2010で
ボタン1を押すと停止させるまでループ開始
ボタン2を押すと停止させるまでループ開始
ボタン3を押すと停止させるまでループ開始
というプログラムを書いたとして、
ボタン1を押しループ処理中の時にボタン2やボタン3を操作して別のループを開始させることは出来るでしょうか?

ExcelVBAでコードを書いたのですが、同時に2つのマクロを実行することが出来ないと知ったため別の方法で実現しようと思い、VB2010のことを調べています。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/11 14:12:25
  • 終了:2011/07/11 20:26:17

ベストアンサー

id:SweetSmile1978 No.3

SweetSmile1978回答回数191ベストアンサー獲得回数292011/07/11 18:36:08

ポイント200pt

VBA ではどうかわかりませんが、

Visual Basic 2010 でなら、それぞれのループの処理が完全に独立していて全く関係しない場合は

非同期処理やスレッドを作成してループをその別スレッドで実行することで実現できます。

ループ中で使用する変数がそれぞれのループで共通の場合は

データの扱いに注意する必要が出てきます。

http://msdn.microsoft.com/ja-jp/library/ms228969.aspx

id:lupink

VB2010なら同時に複数のループを動かせるんですね。

回答ありがとうございます。

2011/07/11 20:24:03

その他の回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982011/07/11 14:21:37

ポイント50pt

DoEventsを実行させると たまったキューを実行することができます。

なので ループ中にDoEventsを実行するようにしてやればよいかと。

id:lupink

回答ありがとうございます。

ExcelVBAでも工夫次第で何とかなるんですね。

2011/07/11 20:24:38
id:rsc96074 No.2

rsc回答回数4398ベストアンサー獲得回数4032011/07/11 14:50:30

ポイント50pt

 こちらは参考になるでしょうか。

●方法 : バックグラウンド ワーカーを使用する

http://msdn.microsoft.com/ja-jp/library/cc221403(v=vs.95).aspx

●Visual Basic定番ワザ大全 [単行本] 日向 俊二(著)

>第26章 プロセスとスレッド ――バックグラウンドで実行する

●Visual Basic 2010入門 [大型本] 笠原 一浩(著)

>7-3 バックグラウンド処理

Visual Basic 2010入門

Visual Basic 2010入門

 上の方が正式なのかも知れませんが、「Applocation.DoEvents()」をループの中に入れる方法の方が簡単かも知れません。下記の本のp.161参照。

●明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ) [大型本] 林 晴比古(著)

※参考URL

●Application.DoEvents メソッド (System.Windows.Forms)

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.doevents(v=vs.80).aspx

●@IT:.NET TIPS 時間がかかる処理での「応答なし」を回避するには ...

http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html

●時間のかかる処理の進行状況を表示する: .NET Tips: C#, VB.NET, Visual Studio

http://dobon.net/vb/dotnet/programing/displayprogress.html

●Office TANAKA - Excel VBA関数[DoEvents関数]

http://officetanaka.net/excel/vba/function/DoEvents.htm

●Office TANAKA - Excel VBA Tips[「お待ちください」メッセージの表示]

http://officetanaka.net/excel/vba/tips/tips23.htm

id:lupink

ありがとうございます。

まだまだ勉強不足でよくわからないのですが、リンク先も勉強してみます。

2011/07/11 20:25:30
id:SweetSmile1978 No.3

SweetSmile1978回答回数191ベストアンサー獲得回数292011/07/11 18:36:08ここでベストアンサー

ポイント200pt

VBA ではどうかわかりませんが、

Visual Basic 2010 でなら、それぞれのループの処理が完全に独立していて全く関係しない場合は

非同期処理やスレッドを作成してループをその別スレッドで実行することで実現できます。

ループ中で使用する変数がそれぞれのループで共通の場合は

データの扱いに注意する必要が出てきます。

http://msdn.microsoft.com/ja-jp/library/ms228969.aspx

id:lupink

VB2010なら同時に複数のループを動かせるんですね。

回答ありがとうございます。

2011/07/11 20:24:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません