Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3387 / 13645 ツリー ←次へ | 前へ→

【62506】循環問題があります BYRONWOO 09/7/27(月) 11:20 質問[未読]
【62517】Re:循環問題があります 脱 初心者 09/7/28(火) 14:02 発言[未読]
【62551】Re:循環問題があります BYRONWOO 09/7/29(水) 17:05 質問[未読]
【62555】Re:循環問題があります ponpon 09/7/29(水) 22:19 発言[未読]
【62562】Re:循環問題があります byronwoo 09/7/30(木) 22:06 質問[未読]
【62563】Re:循環問題があります ichinose 09/7/31(金) 7:50 発言[未読]
【62564】Re:循環問題があります 追伸 ichinose 09/7/31(金) 7:55 発言[未読]
【62565】Re:循環問題があります 別解 ichinose 09/7/31(金) 10:27 発言[未読]
【62579】Re:循環問題があります 別解 byronwoo 09/8/1(土) 16:09 回答[未読]
【62569】Re:循環問題があります 脱 初心者 09/7/31(金) 17:41 発言[未読]
【62578】Re:循環問題があります byronwoo 09/8/1(土) 16:03 質問[未読]

【62506】循環問題があります
質問  BYRONWOO  - 09/7/27(月) 11:20 -

引用なし
パスワード
   1   A.XLS,B.XLSがあります。
2   A.XLS中、WORKBOOKS("B.XLS").CLOSE FALSE
               。
               。
               。
   ようなコートがあります
3   B.XLS開く時、DO WHILE TRUE
             。
             。
             。
          LOOP
   が実行されました。

問題は A.XLSのCLOSE方法を使用時、B.XLSを閉じますが、CLOSEまでマクロが止めます、後のコートが実行されません。そして、A.XLSの変数は初期値になります。

解決方法をお願いします。

【62517】Re:循環問題があります
発言  脱 初心者  - 09/7/28(火) 14:02 -

引用なし
パスワード
   ▼BYRONWOO さん:

情報を、あまりにも削除しすぎて 絶対に必要な情報が
なさすぎです。
誰も、答えられないと思います。

>   ようなコートがあります

「ような」とは、何ですか?
具体的に、情報を コピー&ペーストして
開示してください。


>3   B.XLS開く時、DO WHILE TRUE
>             。
>             。
>             。
>          LOOP
>   が実行されました。

実行されているのですか?

>CLOSEまでマクロが止めます、後のコートが実行されません。

「CLOSEまでマクロが止めます」の
具体的な説明がないと答えられません。

>そして、A.XLSの変数は初期値になります。

「初期値になる」は、どうやって知りえたのですか?


レスをするのは、神様ではないので
あなたが説明しない限り
絶対にわかりません。

【62551】Re:循環問題があります
質問  BYRONWOO  - 09/7/29(水) 17:05 -

引用なし
パスワード
   ▼脱 初心者 さん:
すみません、私の日本語能力がよくないです。

具体コードはこのようです。
1.A.xls
Private Sub CommandButton1_Click()
  workbooks.open "c:\b.xls"
End Sub
Private Sub CommandButton2_Click()
  WORKBOOKS("B.XLS").CLOSE FALSE
  msgbox "TESTING"
End Sub

2.B.xls
Private Sub Workbook_Open()
  do while true
   doevents
  loop
End Sub

操作手順は、
1.CommandButton1を押す、B.xlsが開く。この時B.xlsの循環が実行します。
2.CommandButton2を押す、B.xlsが閉じる。でもメッセージ「TESTING」が表示しません。「WORKBOOKS("B.XLS").CLOSE FALSE」までマクロが止まれます。

これは異常中止です。

【62555】Re:循環問題があります
発言  ponpon  - 09/7/29(水) 22:19 -

引用なし
パスワード
   ▼BYRONWOO さん:


2.B.xls
Private Sub Workbook_Open()
  do while true
   doevents
  loop
End Sub

よくわかりませんが ↑が邪魔してますね。
無限ループに入っているんだと思います。

↑のコードで何してるのでしょうか??

【62562】Re:循環問題があります
質問  byronwoo  - 09/7/30(木) 22:06 -

引用なし
パスワード
   ▼ponpon さん:
>▼BYRONWOO さん:
>
>
>2.B.xls
>Private Sub Workbook_Open()
>  do while true
>   doevents
>  loop
>End Sub
>
>よくわかりませんが ↑が邪魔してますね。
>無限ループに入っているんだと思います。
>
>↑のコードで何してるのでしょうか??
That's a sample source, specific contains trigger of course.
B.xls is a Time Counter function.
Because Excel can't use "Timer" control(timer event must be needed).So i have to do it myself.

My PC cant input Janpnese.Sorry

【62563】Re:循環問題があります
発言  ichinose  - 09/7/31(金) 7:50 -

引用なし
パスワード
   おはようございます。現象の確認ができました。
A.xls
コントロールツールボックスのコマンドボタンをシートに貼り付けている
ということで良いですか?

だとすると、対象シートのモジュールに

Private Sub CommandButton1_Click()
  workbooks.open "c:\b.xls"
End Sub
Private Sub CommandButton2_Click()
  On Error Resume Next
  With Workbooks("B.XLS")
    .b_loop = False
  End With
  Application.OnTime Now(), Me.[_CodeName] & ".b_close"
  On Error GoTo 0
End Sub
Sub b_close()
  Workbooks("B.XLS").Close False
  MsgBox "TESTING"
End Sub


B.xlsのThisworkbookのモジュールに


Option Explicit
Public b_loop As Boolean
Private Sub Workbook_Open()
  b_loop = True
  Do While b_loop
   DoEvents
  Loop
End Sub


これで試してみてください。
滅多にこんなコードは書きませんが、要注意ですねえ!!

【62564】Re:循環問題があります 追伸
発言  ichinose  - 09/7/31(金) 7:55 -

引用なし
パスワード
   現象の確認は、WIN2000&Excel2002 で行ないました。

【62565】Re:循環問題があります 別解
発言  ichinose  - 09/7/31(金) 10:27 -

引用なし
パスワード
   1.A.xls
Private Sub CommandButton1_Click()
  workbooks.open "c:\b.xls"
End Sub
Private Sub CommandButton2_Click()
  On Error Resume Next
  With Workbooks("B.XLS")
    .b_loop = False
  End With
  DoEvents
  MsgBox "TESTING"
  On Error GoTo 0
End Sub


2.B.xls

Public b_loop As Boolean
Private Sub Workbook_Open()
  b_loop = True
  Do While b_loop
   DoEvents
  Loop
  Me.Close False
End Sub

【62569】Re:循環問題があります
発言  脱 初心者  - 09/7/31(金) 17:41 -

引用なし
パスワード
   ▼BYRONWOO さん:
>すみません、私の日本語能力がよくないです。

中国人の方のようですが、日本語能力も英語能力も誤字が多いと
誤解を生んで、絶対に意味が伝わりません。

母国語のサイトを探されるのが、一番では?

>>そして、A.XLSの変数は初期値になります。
>「初期値になる」は、どうやって知りえたのですか?

私からの質問は、無視ですか?

だったら、「これから回答しようか」と考えている人の意欲も
削がれますね。

>これは異常中止です。

タイマーイベントだから、異常中止とは思えませんが
あなたにとっての、「正常」は どういう状態を
指していますか?

【62578】Re:循環問題があります
質問  byronwoo  - 09/8/1(土) 16:03 -

引用なし
パスワード
   ▼脱 初心者 さん:

>母国語のサイトを探されるのが、一番では?
i did not find related articles in Chinese website.
so i came here looking for a solution for this problem.

>
>>>そして、A.XLSの変数は初期値になります。
>>「初期値になる」は、どうやって知りえたのですか?
>
>私からの質問は、無視ですか?
>
>だったら、「これから回答しようか」と考えている人の意欲も
>削がれますね。
Sorry for forgetting answer that question.
「初期値になる」means Public variable's value turned to Null.
for example, a variable sTmp = "c:\test.ini" before calling b.xls.
but while b.xls was shutted down,sTmp turns to "".
The result is unacceptable.

>>これは異常中止です。
>
>タイマーイベントだから、異常中止とは思えませんが
>あなたにとっての、「正常」は どういう状態を
>指していますか?
After call closeing b.xls function,the rest code in a.xls must run.
but marco stop right over there(closeing b.xls function).it's also the cause of sTmp ="".
Rest code in a.xls keep working and Public variable's value be hold is all i want.

【62579】Re:循環問題があります 別解
回答  byronwoo  - 09/8/1(土) 16:09 -

引用なし
パスワード
   ▼ichinose さん:
>1.A.xls
>Private Sub CommandButton1_Click()
>  workbooks.open "c:\b.xls"
>End Sub
>Private Sub CommandButton2_Click()
>  On Error Resume Next
>  With Workbooks("B.XLS")
>    .b_loop = False
>  End With
>  DoEvents
>  MsgBox "TESTING"
>  On Error GoTo 0
>End Sub
>
>
>2.B.xls
>
>Public b_loop As Boolean
>Private Sub Workbook_Open()
>  b_loop = True
>  Do While b_loop
>   DoEvents
>  Loop
>  Me.Close False
>End Sub
Thank you very much.i'll try this code in Monday.It seems working.

3387 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free