Excel VBA質問箱 IV

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

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


9410 / 13646 ツリー ←次へ | 前へ→

【27445】合図を送るまで処理を止める 田村亮 05/8/9(火) 17:46 質問[未読]
【27448】Re:合図を送るまで処理を止める m2m10 05/8/9(火) 18:03 回答[未読]
【27455】Re:合図を送るまで処理を止める ponpon 05/8/9(火) 19:10 発言[未読]
【27459】Re:合図を送るまで処理を止める kobasan 05/8/9(火) 20:09 発言[未読]
【27464】Re:合図を送るまで処理を止める kobasan 05/8/9(火) 23:10 発言[未読]
【27465】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 0:11 質問[未読]
【27466】Re:合図を送るまで処理を止める Kein 05/8/10(水) 2:32 回答[未読]
【27468】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 8:25 質問[未読]
【27471】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 8:46 お礼[未読]
【27526】Re:合図を送るまで処理を止める N 05/8/10(水) 20:49 質問[未読]
【27529】Re:合図を送るまで処理を止める Kein 05/8/10(水) 21:21 発言[未読]
【27534】Re:合図を送るまで処理を止める N 05/8/11(木) 6:46 質問[未読]
【27467】Re:合図を送るまで処理を止める kobasan 05/8/10(水) 6:48 発言[未読]
【27470】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 8:37 質問[未読]
【27472】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 8:48 お礼[未読]
【27469】Re:合図を送るまで処理を止める ichinose 05/8/10(水) 8:28 発言[未読]
【27473】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 8:52 お礼[未読]
【27475】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 9:14 質問[未読]
【27478】Re:合図を送るまで処理を止める ichinose 05/8/10(水) 10:39 発言[未読]
【27489】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 13:46 お礼[未読]
【27474】Re:合図を送るまで処理を止める 田村亮 05/8/10(水) 9:04 お礼[未読]

【27445】合図を送るまで処理を止める
質問  田村亮  - 05/8/9(火) 17:46 -

引用なし
パスワード
   お世話になります。お知恵拝借させてください。

たとえば、A1のセルに1、2、3、...10。と順に数値を入れるマクロで、入れるたびに処理を止めて画面を見たいのです。

すなわち、A1に1を入れて止めて画面を見る。次に処理を進めて、A1に2を入れて止めて画面を見る...これを続けて行きたいです。

次に処理を進める合図はクリックかEnterにしたい。

“止める”コマンドと“次に進む”コマンドを教えてください。
よろしくお願いします。

【27448】Re:合図を送るまで処理を止める
回答  m2m10  - 05/8/9(火) 18:03 -

引用なし
パスワード
   こんちは

 セルにはそんなの無いと思います。

 シートにコントロールツールボックスのTextBoxをシートに入れたら
 
  TextBox1の中で可能です。

  sub TextBox1_KeyDown .........  のSUBの中で 

   KeyCode が何を押したか判断が可能になります。

【27455】Re:合図を送るまで処理を止める
発言  ponpon  - 05/8/9(火) 19:10 -

引用なし
パスワード
   こんにちは。
>A1に1を入れて止めて画面を見る。次に処理を進めて、A1に2を入れて止めて画
>面を見る...これを続けて行きたいです。

見たいだけですか?
なら、5秒待ってね。

>“止める”コマンドと“次に進む”コマンドを教えてください。

これは、ありません。


Sub test()
  Dim i As Integer

  For i = 1 To 10
  Range("A1").Value = i
  Application.Wait Now + TimeValue("00:00:05")
  Next
 
End Sub

【27459】Re:合図を送るまで処理を止める
発言  kobasan  - 05/8/9(火) 20:09 -

引用なし
パスワード
   ▼田村亮 さん,みなさん 今晩は

msgboxを使って、止める”コマンドと“次に進む”コマンドを実現してみました。
試してみてください。
こんな感じですが、どうですか?


Sub test()
Dim msg As String
Dim i As Integer
Dim yn As VbMsgBoxStyle
Dim flag As Boolean
  For i = 1 To 10
    If flag = True Then Exit Sub
    Range("A1").Value = i
    '
    '画像を表示させるコード
    '
    msg = "Next: Click OK !!" & Chr(13) & Chr(13) & "Stop: Click Cancel !!"
    If MsgBox(msg, vbOKCancel) = vbCancel Then Exit Sub
  Next
End Sub


>たとえば、A1のセルに1、2、3、...10。と順に数値を入れるマクロで、入れるたびに処理を止めて画面を見たいのです。
>
>すなわち、A1に1を入れて止めて画面を見る。次に処理を進めて、A1に2を入れて止めて画面を見る...これを続けて行きたいです。
>
>次に処理を進める合図はクリックかEnterにしたい。
>
>“止める”コマンドと“次に進む”コマンドを教えてください。

【27464】Re:合図を送るまで処理を止める
発言  kobasan  - 05/8/9(火) 23:10 -

引用なし
パスワード
   動作に関係のないコードが残っていました。

Dim yn As VbMsgBoxStyle'<===削除
Dim flag As Boolean'<===削除
>  For i = 1 To 10
    If flag = True Then Exit Sub  '<===削除

【27465】Re:合図を送るまで処理を止める
質問  田村亮  - 05/8/10(水) 0:11 -

引用なし
パスワード
   m2m10さん、ponponさん、kobasanさん、ありがとうございます。
ponponさんには前回もお世話になりました。

m2m10さんのコメントは少々私には難しすぎて申し訳ありません。よくわかりません。
ponponさんのコメントは、待ち時間はケースバイケースでxx秒という指定は最初からはできませんので...申し訳ありません。

今回、kobasanさんに頂いたコードが要望に一番近いのですが、私の説明がひとつ抜けており申し訳ありません。

実は、MSGBOXで制御を止めて、“見る”のは私も考えましたが、画面を見るときにMSGBOXが邪魔になり、それとは別の方法を探しているのが現状です。

ここでMSGBOXのOKをクリックするのではなく、画面のどこかをクリックするかENTERキーを押すかで、処理を再開したいのですが、何か良い方法はありますか?

よろしくお願いします。

【27466】Re:合図を送るまで処理を止める
回答  Kein  - 05/8/10(水) 2:32 -

引用なし
パスワード
   Sub MyKey_Events()
  Application.OnKey "{ENTER}", "Count_Num"
End Sub

Sub MyKey_NoEvents()
  Application.OnKey "{ENTER}"
End Sub

Sub Count_Num()
  With ActiveCell
   If IsEmpty(.Value) Then
     .Value = 1
   ElseIf IsNumeric(.Value) And Sgn(.Value) >= 0 Then
     .Value = CLng(.Value) + 1
   End If
  End With
End Sub

以上を標準モジュールに入れてMyKey_Eventsを実行し、数値を入力したいセルを
選択して "テンキーの Enter" を押してみて下さい。キーに割り当てたマクロを
解除したいときは、MyKey_NoEventsを実行します。

【27467】Re:合図を送るまで処理を止める
発言  kobasan  - 05/8/10(水) 6:48 -

引用なし
パスワード
   みなさん おはようございます。

>画面のどこかをクリックするかENTERキーを押すかで、処理を再開したいのですが、何か良い方法はありますか?

ではないけど、
CommandBarではどうですか

Sub Show_cmdBar()
  cmdBar
  Range("A1").ClearContents
End Sub
Sub Auto_Close()
  On Error Resume Next
  Application.CommandBars("MyMenu").Delete
End Sub

Private Sub cmdBar()
  Dim MycmdBar As CommandBar
  On Error Resume Next
  Application.CommandBars("MyMenu").Delete
 
  Set MycmdBar = Application.CommandBars.Add(Name:="MyMenu", _
            temporary:=True, Position:=msoBarTop)
 
  Set btn1 = CommandBars("MyMenu").Controls.Add(Type:=msoControlButton)
  With btn1
    .Style = msoButtonIconAndCaption
    .Caption = "Next"
    .FaceId = 59
    .OnAction = "macro1"
  End With
 
  Set btn2 = CommandBars("MyMenu").Controls.Add(Type:=msoControlButton)
  With btn2
    .Style = msoButtonIconAndCaption
    .Caption = "終了"
    .FaceId = 266
    .OnAction = "macro2"
  End With
 
  MycmdBar.Visible = True  'コマンドバーを表示
  
  Set MycmdBar = Nothing
End Sub

Private Sub macro1()
  If Range("A1").Value >= 10 Then Exit Sub
  Range("A1").Value = Range("A1").Value + 1
  MsgBox "画像の代わり"  '画像を表示させるコード
End Sub

Private Sub macro2()
  Application.CommandBars("MyMenu").Delete
End Sub

【27468】Re:合図を送るまで処理を止める
質問  田村亮  - 05/8/10(水) 8:25 -

引用なし
パスワード
   Keinさん こんにちは。
コメントありがとうございます。
私のやり方が悪いのでしょうか。動かないのです。
基本的なことがわかってないので申し訳ありません。教えてください。

“標準モジュールに入れる”という意味ですが、私のやっていることは、

excelで
・ツール→マクロ→VisualBasicEditor
VBEの画面で
・挿入→標準モジュール

ここでkeinさんから頂いたコードをコピー&ペースト

excelに戻って
・ツール→マクロ→マクロ→"MyKey_evnets"を実行

と、やっているのですが、画面上何の変化がないのです。

よろしくお願いします。

【27469】Re:合図を送るまで処理を止める
発言  ichinose  - 05/8/10(水) 8:28 -

引用なし
パスワード
   田村亮 さん、皆さん、おはようございます。

>お世話になります。お知恵拝借させてください。
>
>たとえば、A1のセルに1、2、3、...10。と順に数値を入れるマクロで、入れるたびに処理を止めて画面を見たいのです。
>
>すなわち、A1に1を入れて止めて画面を見る。次に処理を進めて、A1に2を入れて止めて画面を見る...これを続けて行きたいです。


どうして上記のような処理がしたいのか がわからないのですが、
方法のひとつとして・・・
スピンボタンを使用する事も検討してみて下さい。
以下のコードでアクティブシートのセルA1にスピンボタンを連動します。

'============================================================
Sub main()
  Dim spi As Spinner
  With Range("a1")
   Set spi = .Parent.Spinners.Add(.Left + .Width, .Top, 10, .Height)
   With spi
    .LinkedCell = "=" & Range("a1").Address(, , , True)
    .SmallChange = 1
    .Value = 1
    End With
   End With
End Sub

これでスピンボタンのクリックでセルA1の値が変更できます。

【27470】Re:合図を送るまで処理を止める
質問  田村亮  - 05/8/10(水) 8:37 -

引用なし
パスワード
   kobasanさん、こんにちは。
コメントありがとうございます。
コマンドバーとは気づきませんでした。

私のexcelの中では、A1のセルに1を加えたことで、それによりそのSheet全体に結果が及ぶようになっているのですが、今回、その結果を見たいだけなので、特別な画像やMSGBOXを表示する必要はなく、1を加えた直後に処理を止めたいだけなのです。その場合、どうすればよいのでしょうか。

たとえば、目障りでない小さなダミー画像を画面の隅にでも出してその場をしのぐと言うのもひとつの方法だと思いますが、その場合、具体的に

「MsgBox "画像の代わり"  '画像を表示させるコード」

の部分に何を施せばよいのか、教えてください。

よろしくお願いします。

【27471】Re:合図を送るまで処理を止める
お礼  田村亮  - 05/8/10(水) 8:46 -

引用なし
パスワード
   Keinさん、先ほどの再質問のあと、ichonoseさんという方からスピンボタンの提案を受けまして、問題が解決しました。いろいろとお世話になり、ありがとうございました。今後ともよろしくお願いします。

【27472】Re:合図を送るまで処理を止める
お礼  田村亮  - 05/8/10(水) 8:48 -

引用なし
パスワード
   kobasanさん、先ほどの再質問の後、ichinoseさんという方から、スピンボタンの提案を受けまして、解決しました。いろいろとお世話になりありがとうございました。今後ともよろしくお願いいたします。

【27473】Re:合図を送るまで処理を止める
お礼  田村亮  - 05/8/10(水) 8:52 -

引用なし
パスワード
   ichinoseさん、こんにちは。

コメントありがとうございます。
頂いたコードで問題解決しました。確かに、なぜA1に1を加えていくのかを説明する必要がありましたね。

実は、少人数制の学校関係の仕事で生徒の時間割を生徒ごとに作っているのです。生徒に番号を振っておいて、1から順にその内容を見る必要があり、今回の質問となったわけです。

ご指導いただきありがとうございました。
今後ともよろしくお願いいたします。

【27474】Re:合図を送るまで処理を止める
お礼  田村亮  - 05/8/10(水) 9:04 -

引用なし
パスワード
   m2m10さん、ponponさん、kobasanさん、Keinさん、ichinoseさん
ご指導ありがとうございました。今回、ichinoseさんのスピンボタンのご提案で問題解決することができました。

ichinoseさんのご質問のなかで、どうしてA1に1を加えていく必要があるのかがわからないとありましたが、確かにそうですね。こちらの質問の仕方が悪いと、的確な回答も得られないのは当然で、皆さんにご迷惑をおかけしました。申し訳ありませんでした。
余談ですが、私は学校関係で少人数の生徒ごとの時間割を作るのに苦労しております。生徒に番号を振って、番号順に画面に生徒の時間割を表示してみる必要があり、今回の質問に至ったわけです。

質問するときは、末端の処理の仕方を聞くのではなく、何がしたいかを背景を含めて聞くべきであったと、反省しております。

皆さんには感謝しております。
今後ともよろしくお願いいたします。

【27475】Re:合図を送るまで処理を止める
質問  田村亮  - 05/8/10(水) 9:14 -

引用なし
パスワード
   ichinoseさん、こんにちは。
お礼の後に、なんなんですが...。

今回のスピンボタンの設置は、ひょっとしてマクロでなくても良かったのでしょうか?

マクロを使わずに、普通に設置できるものですか?
設置の際、スピンさせるときの↑↓のボタンの大きさも自由に変えられるのでしょうか。

たびたびすみません。わかれば教えてください。

【27478】Re:合図を送るまで処理を止める
発言  ichinose  - 05/8/10(水) 10:39 -

引用なし
パスワード
   ▼田村亮 さん:

>
>今回のスピンボタンの設置は、ひょっとしてマクロでなくても良かったのでしょうか?
>
>マクロを使わずに、普通に設置できるものですか?
>設置の際、スピンさせるときの↑↓のボタンの大きさも自由に変えられるのでしょうか。

はい、マクロを使用しなくても可能ですよ!!
コマンドバー「フォーム」にあるスピンボタンを使用します。
大きさなどの設定も可能です。

マクロでの投稿は、これらの配置操作の記述を省くためでした。


同じようなコントロールが
コマンドバー「コントロールツールボックス」にもあります。
どちらを選ぶかは一長一短ありますから、
ここの過去ログやサイト検索を行ってみて下さい。

【27489】Re:合図を送るまで処理を止める
お礼  田村亮  - 05/8/10(水) 13:46 -

引用なし
パスワード
   ichinoseさん、ご協力ありがとうございました。
参考になります。

今後ともよろしくお願いします。

【27526】Re:合図を送るまで処理を止める
質問  N  - 05/8/10(水) 20:49 -

引用なし
パスワード
   田村さん、この場をお借りして失礼ではございますが。

本来なら、改めて質問をする方が良いのでしょうが・・・
一から質問を作成すると説明しきれないことと、上手く説明できない
私の能力の至らなさで分かりにくくなると思い、横から
失礼ではありますが、よろしくお願いします。

Kein さんの
Mykey_EventsとMykey_Noeventに何か興味がひかれっます。
要は、動作を働かすか?止めるか?の選択ができるということでは
無いんでしょうか。Events もNoeventも、現在は共にSub Count_Num()が動きますが・・・
動作を停止(解除)させる方法を教えていただけないでしょうか。
Kein さん、もしご覧になっておれれましたら宜しくお願いします。

>Sub MyKey_Events()
>  Application.OnKey "{ENTER}", "Count_Num"
>End Sub
>
>Sub MyKey_NoEvents()
>  Application.OnKey "{ENTER}"
>End Sub
>
>Sub Count_Num()
>  With ActiveCell
>   If IsEmpty(.Value) Then
>     .Value = 1
>   ElseIf IsNumeric(.Value) And Sgn(.Value) >= 0 Then
>     .Value = CLng(.Value) + 1
>   End If
>  End With
>End Sub
>
>以上を標準モジュールに入れてMyKey_Eventsを実行し、数値を入力したいセルを
>選択して "テンキーの Enter" を押してみて下さい。キーに割り当てたマクロを
>解除したいときは、MyKey_NoEventsを実行します。

【27529】Re:合図を送るまで処理を止める
発言  Kein  - 05/8/10(水) 21:21 -

引用なし
パスワード
   >Events もNoeventも、現在は共にSub Count_Num()が動きます
こちらでテストした限り、Noeventを実行後は Enterキーがちゃんと元の働きに
戻りましたよ。つまりアクティブセルが下か右などに一つ移動する、という動きに
です。一方、Eventsの方を実行すると、アクティブセルに値を1から加算していく、
という動作に変わります。なので全く問題ないと思われますが・・。

【27534】Re:合図を送るまで処理を止める
質問  N  - 05/8/11(木) 6:46 -

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

ご解答ありがとうございます。
再度質問ですが・・・

>こちらでテストした限り、Noeventを実行後は Enterキーがちゃんと元の働きに
>戻りましたよ。つまりアクティブセルが下か右などに一つ移動する、という動きに
>です。
例えば、現在アクティブセルが"B3"とします。
ここでNoeventを実行後、Count_Nunを操作しても、Eventを実行後、Count_Nunを
操作しても同じ動きですが。
操作の手順があるのでしょうか?各種トライしましたが、何ら違いが出ないのですが?

アクティブセルが下か右などに一つ移動する?っと書かれていますが、他にコードを
加える必要があるのでしょうか?

>一方、Eventsの方を実行すると、アクティブセルに値を1から加算していく、
>という動作に変わります。なので全く問題ないと思われますが・・。
このご回答も?分かりませんが・・・途中からでも数字は加算されます。
Event,Noevent関係なく,例えば現在のカウントが ”5”であれば、共に
6になりますが。

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