今のコードを載せます
Sub test_StopwatchCell()
If did Then
kStopwatch
Else
kStopwatch Range("a1")
End If
End Sub
上のコードはエクセルワークシートにフォームのボタンを配置して、test_StopwatchCell 関数を登録し、クリックで測定開始し、もう一度クリックで測定停止するマクロですが、一時停止のボタンを新たに作りたいのですが、どうしたらいいのか教えて下さい。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.2です。


そうですね・・・
「開始/停止(トグル)」と書いてあったので、てっきりその時間から始めると思ってしまいました。
勝手にプログラムに手を加えるのは良くないかもしれませんが・・・
たとえば標準モジュールの
Sub kStopwatch(Optional obj As Object)
の中の8行目位の
>dstart = timeGetTime
が、
dstart = timeGetTime - obj.Value * 86400000 '86400000=60*60*24*1000
だったら、現在の時間から始めるかもしれません。
    • good
    • 0
この回答へのお礼

教えて下さったとうり変更してみたらできました!
まさに知りたかったのはこのことです。親切に教えて下さって本当に助かりました。VBを勉強している最中で分からないことだらけですが、これから少しずつ上達していきたいと思ってます。
とても役に立ちました。有難うございました。

お礼日時:2009/05/22 07:19

kStopwatch が


>http://homepage2.nifty.com/kmado/ke_m8.htm
のストップウォッチの事なら、2つのコマンドボタンを用意して、以下ではどうでしょうか?
本物のストップウォッチもこんな風なボタン配置ではなかったでしょうか?

'スタート・一時停止ボタン
Private Sub CommandButton1_Click()
kStopwatch Range("A1")
End Sub
'クリアボタン
Private Sub CommandButton2_Click()
kStopwatch 'カウント中の場合でも停止
Range("A1").Value = 0
End Sub

p.s.
プログラムの先頭に
'kStopwatch関数 ストップウォッチの開始/停止(トグル)
とありました。
実行中に呼ばれる事で一時停止になるようです。

この回答への補足

>kStopwatch が
http://homepage2.nifty.com/kmado/ke_m8.htm
のストップウォッチの事なら・・・・

まさにそのことです。
ご回答ありがとうございます。
これで一時停止できるようにはなったのですが、再スタート(スタート・一時停止ボタンを押す)しようとすると、カウントがまた0からになってしまうので困っています。一時停止し、もう一度押すことでその続きからカウントするようにするにはどうしたらいいのでしょうか。ぶしつけですみませんが、ご指導お願いします。

補足日時:2009/05/21 18:00
    • good
    • 0

kStopwatch1の中の時間を数えている部分に


フラグを判定する部分または
セルまたはさらに別のボタンの値を読み取るかする
部分を追加して、
その値が一時停止させたい値なら時刻カウントを
しないようにすればいいと思います。
 引数としてRange("a1")のように値を利用できる
みたいですから、A2などのセルの値を利用するのが
手っ取り早そうですが・・・。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qstudyplusについて studyplusというアプリにストップウォッチ機能はついていますか?

studyplusについて
studyplusというアプリにストップウォッチ機能はついていますか?
どこにあるのかわかりません……(´;ω;`)

Aベストアンサー

ついていますよ!
記録する→右下に時計マークがあります

Q条件付きコンパイル: #IF 1 Then と #IF 0 Then

条件付コンパイルで、
『#If 1 Then』と『#If 0 Then』の条件の違いを教えてください。


『#If ○○○=1 Then』などの場合はわかるのですが、
単に『#If 1 Then』の場合は何をもって真となるのでしょうか?

よろしくお願いいたします。

Aベストアンサー

条件式は、強制的に「True」又は「False」に解釈されます。

で、「数値」を「True」又は「False」に解釈する場合、
「0」は「False」、「0以外」は「True」になります。
(http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/vsfctcbool.asp)

つまり、
『#If 1 Then』は、「必ずTrue」=常に有効
『#If 0 Then』は、「必ずFalse」=常に無効
に成ります。

QI アプリのストップウォッチあります?

最近やっとI アプリを使える機種に交換しました。そこでカップラーメンを作っているときにふと思ったんです。Iアプリでストップウォッチを使えたらいいな、と。

どなたかご存じないでしょうか?

Aベストアンサー

下記URLで検索できます。
PC http://appget.com/pc/
iモード http://appget.com/im/ (PCからアクセス可能)

参考URL:http://appget.com/pc/

QエクセルVBEモジュールにif then elseを使ってマクロを書き

エクセルVBEモジュールにif then elseを使ってマクロを書きました。thenとelseの中間ぐらいでmsgbox”お知らせ”を書いて実行するとメッセージボックスは正しく表示します。しかしポインターがメッセージボックスウィンドウの外にあるときは砂時計が動き続け、メッセージボックスの上に置けば普通の矢印に変わります。砂時計を出さない方法はどうしたらよいのでしょうか。msgbox”お知らせ”の下行に続けてexit subまたはon error goto 0を書いてもやはり時計がでてしまいます。どうしたらよいのでしょうか。

Aベストアンサー

コード実例が書いてなくて、情況が理解しづらく、言っていることがおかしいように思う。
挿入ー標準モジュールに(標準モジュールに入れてますか)
Sub test01()
If Cells(1, "A") = "1" Then
MsgBox "1です"
Else
MsgBox "1では在りません"
End If
End Sub
と入れてA1セルに1を入れて実行。
また2を入れて実行。
で質問と同じ現象になりますか?
質問者のコードはこれと似たようなコードですか。
そもそも質問をするのに、短いならばコードを挙げて質問するものですよ。
一瞬以上の砂時計が出るとは考えられない。
砂時計が出るのは、内部処理に時間がかかっているためで、
OSの仕組みに根ざしているので、出さないようにすると言う選択肢は、普通それだけを問題にされない。
ユーザー側で意識的に出すようにするのか下記コード。
他にカーソルポインターの形は、変えることが出来る。
http://support.microsoft.com/kb/408038/jaを参照。
時間がかかる処理をやってみると
Sub test02()
For i = 1 To 100000000
i = i + 1
Next i
MsgBox "終了"
End Sub
のようなものだと数秒間は砂時計が現れるとおもう。
ーーーー
他にマウスカーソルをエクセル画面内で変える
ub test02()
'Application.Cursor = xlWait '砂時計
'Application.Cursor = xlDefault
Application.Cursor = xlNorthwestArrow
'Application.Cursor = xlIBeam

For i = 1 To 100000000
i = i + 1
Next i
MsgBox "終了"
End Sub
の上の4行。しかしこれは処理中の砂時計と同類のことではない。

コード実例が書いてなくて、情況が理解しづらく、言っていることがおかしいように思う。
挿入ー標準モジュールに(標準モジュールに入れてますか)
Sub test01()
If Cells(1, "A") = "1" Then
MsgBox "1です"
Else
MsgBox "1では在りません"
End If
End Sub
と入れてA1セルに1を入れて実行。
また2を入れて実行。
で質問と同じ現象になりますか?
質問者のコードはこれと似たようなコードですか。
そもそも質問をするのに、短いならばコードを挙げて質問するものですよ。
一瞬以上の砂時計が出るとは考えられない...続きを読む

Qストップウォッチが3つ並んだようなアプリって

ストップウォッチが3つ並んだようなフリーソフトってありますか?

3種類の事をどのくらいやったのかを記録するために使いたいので、普通のストップウォッチが3つ並んでいればシンプルなものでいいのですが…。

ご存知の方いらっしゃいましたら教えてくださいよろしくお願いいたします。

Aベストアンサー

3つではなく10個ですが・・・

MultiTrack Stopwatch

http://morimosoft.com/jp/mwatch/index.html

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

Qストップウォッチアプリ au

こんにちは。
アプリを探しています。
BREWです。
無料のアプリゲットみたいなところで
とったら、データフォルダに保存して
使用できるのですが、メール受信とか
ほかの機能を使うとリセットされてしまって・・・。
普通のアプリ?で使えるやつありませんか?
勉強時間を計るのに使います。
シンプルなものでかまいません。
できればあまり値段の高いのは困ります・・・。
もし知っていたら教えてください。

Aベストアンサー

auはDoCoMoと違ってマルチタスクじゃないから無理じゃないですかね?
メールや電話が来てもとりあえず無視すればOKかと思いますが....

※100円ショップでもストップウォッチ売ってますよ(^^)

QIf Not c Is Nothing Then ~延々処理が続く~ End If

質問というか相談というか
VBAで下記のようなコードをよく見ますし、私自身もこれで書いてます。

For i= 1 to 10
set c=Range.Find(”いろは")
If Not c Is Nothing Then


処理が続く


End If
Next i

cが見つからなかったら、さっさと次の i に進む場合の処理です。Ifの字下げがず~~っと延々続き、最後のNext iの直前でEnd If です。
・Exit For はあるのに 途中Next iは出来ない
・Goto 使って書くと「スパゲティプログラムだ」とか言われる
正直言って、上記コードとGotoスパゲティで可読性に差異があるとは思えません。何でもかんでもGotoはダメていう風潮がおかしいように思えます。

みなさんどうやって書いてますか?

Aベストアンサー

こんにちは。

>Goto 使って書くと「スパゲティプログラムだ」とか言われる
どっちかというと、今は、ネットの中で、某VBA系の専門掲示板で、他人のコードを罵る時に使う用語ですね。Goto を使ったから、スパゲティーと短絡して使うのに、その言った本人は、エラー処理ひとつ施していない隙だらけのコードだということが多いのです。「スパゲティプログラム」は、◯◯の一つ覚えの用語だと思います。

>For i= 1 to 10
>set c=Range.Find(”いろは")
>If Not c Is Nothing Then

>~
>処理が続く
>~
>
>End If
>Next i

これって、よく見るとおっしゃっていますが、ひとつ例外に、いわゆる「ブルートフォースアタック(総当り制)」のコードがありますね。それは、Goto 以外に抜け出せる方法がありませんね。「深いネストはするな」という禁を犯しているのだから、Goto 以前のものがあります。(何に使うかはご存知だと思いますし、それをとやかく言う人はいないでしょう。)

これを書き換え、再帰を使うと良いとか言う人もいるのでしょうけれども、そういうのは、知識だけで実際にやったことがない人の話だと思います。「スパゲティ」とか知らない人に、比べさせれば、再帰などを使った方法は、遅くてダメ出しされるのは目に見えています。特殊な例ですが。

ご質問で、実際の私は、内容にもよりますが、
Private flg As Boolean

Sub Main()
On Error Goto ErrHandler
For i= 1 to 10
 Call subRutine(findTxt)
 If flg Then Exit For
Next i
Exit Sub

ErrHandler:
処理
End Sub
'ここの中身はテンプレート化してあります。
Private Sub subRutine(ByVal findTxt) または、Public
'処理
End Sub

としているはずで、モジュールレベルの変数を、flg とし、サブルーチンの中に置いて、目的がかなったら、Flgは、Trueになって、ループから抜け出すようにします。

サブルーチン側では、End ステートメントを使用することさえもあります。(テンプレート化しているのは、Findメソッド、RegExpの正規表現、Sortメソッド、Dictionary とSortLists などがあります。[MZ-Tools 3.0]を使用)

GOTO は、構造化プログラムが登場した時に、排除するように言われてきたものです。古い時代の人は、GOTOに逃げたくなるのを抑えるために、「GOTO」を使うなって、肝に命じてきたのです。しかし、結局、Goto は、なくならなかったのは、一つには、ErrHandlerを使った、エラートラップのせいもあります。だから、Goto を書かないでErr.Raise (513~)で飛ばす方法がありますが、あまり使う人はいません。

ところで、
「スパゲティプログラム」という話に振られると、私は自信がありません。
読みやすさ(可読性)の対極になるものでしょうけれども、誰に対して言っているものか、ということです。私の大事にしている本の中に、アスキーの『QuickBASICプログラミング道場』(1991年)という本があります。

---引用
・本道場で推奨するプログラミングスタイル (p25~)

1.変数・定数・プロシージャーの命名法 (変数の型のサフィックスは使うな)
2.インデントを付けるべし
3.メインプロシージャは短くすべし
4.プロシージャは短くすべし
5.長いブロックはプロシージャーにすべし
6.汎用性のあるプロシージャーを作るべし
7.定数は活用すべし
8.GOTOは乱用(濫用)すべからず。●
 従来のBASICを使ってきた人の中には、GOTO文を多用する人がいるようだ。GOTO文はそのときは便利なように思うが、あとになってリストを眺めてみると、どこに飛んでいるか分からなくなることが多い。……わけがわからない最低の"スパゲティプログラム"になってしまう。
 【例】GOTO文をDOループに置き換える
----引用終わり

現代でも通用するというよりも、その言葉が生まれた時代背景がありますから、必ずしも、GOTOが問題だということではなさそうです。Goto を使わないということにこだわると、逆に墓穴を掘ることになります。

それと、DO ループにするというのは、DO ~ LOOPの間に緊張感(?)は生まれるけれども、無限ループを生み出しやすくなるのです。その頃はそれで良かったかもしれませんが、もうESCでは止まりません。今は必ずしも認められるものではありません。

それと、記録マクロを、そのままVBAプロシージャーに用いるのは、絶対にダメなのですよね。本当のスパゲティプログラムになってしまいます。ベタ書きになってしまうからで、一度、そういうコードを直してくれと言われましたが、怒りを抑えて、丁重にお断りました。

こんにちは。

>Goto 使って書くと「スパゲティプログラムだ」とか言われる
どっちかというと、今は、ネットの中で、某VBA系の専門掲示板で、他人のコードを罵る時に使う用語ですね。Goto を使ったから、スパゲティーと短絡して使うのに、その言った本人は、エラー処理ひとつ施していない隙だらけのコードだということが多いのです。「スパゲティプログラム」は、◯◯の一つ覚えの用語だと思います。

>For i= 1 to 10
>set c=Range.Find(”いろは")
>If Not c Is Nothing Then

>~
>処理が続く
>~
>
>End If
>Next...続きを読む

Qストップウォッチで勉強時間を計りたいのですが、図書館とかだと音が出ると

ストップウォッチで勉強時間を計りたいのですが、図書館とかだと音が出ると他の方に迷惑かかります。

音の出ないストップウォッチってないでしょうか?

あったら教えていただけないでしょうか?

Aベストアンサー

100均でもデジタル式のストップウオッチ売ってます。
あまり小さいと操作性悪いですから420円ぐらいの物ががいいかもしれません、
通常はストップウオッチとカウントダウンタイマーとして使えますが、カウントダウンタイマーとして使用すると時間経過後アラームが鳴りますね、100均でストップウオッチがみつからない場合キッチンタイマーで探すといいかもしれません。

QSub-EndでConsole.Writeでコマンドプロンプト出力したい

VB.NET2003:WindowApplication の Sub~End で 出力Console.Write("***") としてもコマンドプロンプトウィンドウにでないで、.NETウィンドウのデバッグ欄にしか出ない。前もって何かを指定しなければならないのでしょうが全くわかりません。ConsoleApplication ではうまくいっていますが。初心者なのでよろしくお願いします。

Aベストアンサー

Windows Applicationは,コンソールを持ちません。
# AllocConsole API等を使えば,専用コンソールを持てますが。

コンソールへ出力したいのであれば,Console Applicationにする必要があります。
なお,Console ApplicationであってもWindows Formsを開く事は可能です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報