![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
EXCEL2002でセルの時刻(A1)が15分更新されるのに対応させて、他のセル(B1)の数値を+1ずつ増加させる方法を教えて下さい!
例として,
A1に9:00 というNOW関数で表示させた値が、9:15⇒9:30⇒9:45⇒10:00
と変化する度に、
B1の値を「1」を初期値として始まり、 1⇒2⇒3⇒4⇒5 と増加させる方法を教えて下さい!
この際、
OnTime メソッドを使って、15分ごとに
1.Calculateする
2.セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む。(多分Microsoftの推奨は前者)
3.次回(15分後)のOnTime設定をする。
4.閉じるときはOnTime設定を解除する。
以上の方法で、VBAを組み立てるには、どうしたら良いでしょうか?
何度やっても失敗します。
たいへん、厚かましい質問で申し訳ありません。
実行可能なプログラムの形で教えて頂けないでしょうか?
以前の質問 QNo.2292225の関連質問です。御覧下さい!
参考URL http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv214.html
No.2
- 回答日時:
こんにちは。
何のために、このようなマクロを行うのでしょうか?
最近、公開株式のデータを取得するという方が、このようなマクロを手に入れたいとおっしゃいます。実際は、内容的にひじょうに特殊な作業をしているようで、その場合は、Calculate イベントが必要になります。しかし、別のアドインなのか、特別なプログラム上なのか、私自身は、元のプログラムを知らないので、以下のように単独では動いても、相手の方の環境では、この種のマクロでは成功しておりません。
なお、掲示no. 2292225 , #3 のエラーの内容が、依然、不明ですが、エラーが出たときは、必ず、エラー番号と内容を教えるようにしてください。回答者の方は、どうしようもないことがあります。
前回のご質問で解決しなかったのですから、できるだけ、前回のほうは、締めたほうがよいと思います。内容が、ほぼ同じですから、マルチポストになってご質問自体が削除の対象になります。
このご質問に書かれてある仕様には直接つながりません。Calculate メソッドは、揮発性関数の値を再取得するためのもので、マクロを動かしている限りは、直接、マクロから行ったほうがよいからです。
なるべく、セルのA1 の書式設定はしておいてください。
必要に応じて、ユーザー設定部分を修正してください。
'--------------------------------------------------------
'標準モジュール設定
Private SetTime As Date
Private TimeFormat As String
'ユーザー設定 何時間おきか? "時:分:秒"
Private Const AddTime As String = "00:15:00"
Sub Auto_Open()
'ブックを開いて起動
Dim myDate As Variant
Worksheets("Sheet1").Select
TimeFormat = Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal
If InStr(TimeFormat, ":") = 0 Then
'書式が違う場合は、キメウチされます。
TimeFormat = "yy/mm/dd hh:mm:ss"
End If
myDate = Worksheets("Sheet1").Cells(1, 1).Value
If CDate(myDate) + TimeValue(AddTime) <= Now Or myDate = "" Then
SetTime = (Int(Now / TimeValue(AddTime)) + 1) * TimeValue(AddTime)
Worksheets("Sheet1").Cells(1, 1).Value = SetTime
Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal = TimeFormat
Else
SetTime = (Int(CDate(myDate) / TimeValue(AddTime)) + 1) * TimeValue(AddTime)
End If
Worksheets("Sheet1").Cells(1, 2).Value = 1
Debug.Print SetTime
Application.OnTime SetTime, "CountMacro"
End Sub
Private Sub CountMacro()
Dim i As Long
SetTime = SetTime + TimeValue(AddTime)
Worksheets("Sheet1").Cells(1, 1).Value = SetTime
Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal = TimeFormat
If IsNumeric(Worksheets("Sheet1").Cells(1, 2).Value) Then
Worksheets("Sheet1").Cells(1, 2).Value _
= Worksheets("Sheet1").Cells(1, 2).Value + 1
Else
Worksheets("Sheet1").Cells(1, 2).Value = 1
End If
Debug.Print SetTime
Application.OnTime SetTime, "CountMacro"
End Sub
Sub Auto_Close()
'設定解除用
On Error Resume Next
Application.OnTime EarliestTime:=SetTime, _
Procedure:="CountMacro", Schedule:=False
If Err.Number > 0 Then
'異常終了
MsgBox Err.Number & ": " & Err.Description
Err.Clear
Else
MsgBox "時間設定(" & Format(SetTime, TimeFormat) & ")は解除されました", vbInformation
End If
End Sub
'--------------------------------------------------------
朝方、早い時間にも関わらず、こうして、ご回答下さり、誠に、有難うございます。
貴方は、なんて、お優しい方なのですか?
見ず知らずの私に対し、これほどの、お骨折りを頂きまして、感謝の言葉に絶えません。
本当に、有難うございます。
このサイトで、伺うのは、まだ、経験が浅いため、質問も要領を得ず、解かりにくい点が多く、すみませんでした 前回、質問させて頂いたことを、一旦、締め切ってしまうと、
(1)回答者の方が、『その後、解決方法について、新たに思いついた』ことを書き込めなくなって、失礼。
(2)『もう、解決済みのことだから』、と以降、注目して下さらなくなるのではないか?
と、思って、気が気でなかったのです。
このように、また、たいへん、ご親切に解説して下さる、『神様』のような存在の方(ですから、本当に、感謝いたします。)のご登場で、安心して、前回質問に、終幕の幕引きを致したいと思います。
ところで、本来の質問のテーマに関して、
>何のために、このようなマクロを行うのでしょうか?
Wendy02様の『具体的に、どのような使用目的のマクロであるか?』との御尋ね。
御推察の通り、証券会社の提供するリアルタイムスプレッドシートという、EXCELに、関数を打ち込んで、株価の変動に合わせ、ほぼ、リアルタイムに”株価を取得”し、連動させた計算を行う”仕様”のものです。
そこで、上記のような質問をさせて頂きました。。
>なお、掲示no. 2292225 , #3 のエラーの内容が、依然、不明ですが、エラーが出たときは、必ず、エラー番号と内容を教えるようにしてください
に関してですが、『エラー番号』とは、どのようにしても、表示されず、解からなかったのですが、
頂いた、プログラムならば、状況が一変するかと、思います。
まずは、『何事も経験から』、早速、頂いたプログラムを、走らせ、実行させて頂きます。
有難うございます。本当に感謝致します。
まずは、感謝の気持ちを申し上げたく、御礼の言葉にかえさせて頂きます。
No.1
- 回答日時:
> 何度やっても失敗します。
不思議ですね。ヘルプの通りやる他ないと思うのですが。
そのコード、貼ってもらえます?
> 実行可能なプログラムの形で教えて頂けないでしょうか?
何を勘違いされているのか知りませんが、そういうのはありえません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセルの関数(式)を教えてください。 1 2022/09/27 09:28
- Visual Basic(VBA) EXCEL VBA ユーザーフォームの内容をループでデータベースに登録したい。 2 2023/02/02 10:22
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) 関数を用いて表示したセルの内容を、見えている形でコピーする方法 2 2022/09/14 16:36
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートのクリ...
-
Excelで数字を入れたら対応する...
-
【エクセル】フリーワード検索...
-
Excelのシート上のShapeにイベ...
-
エクセルファイルを開いた回数...
-
行事予定表の作成でご教示下さい
-
EXCELのダイアログシートって、...
-
Excelマクロでブック全体を検索...
-
エクセルで○をつけるマクロ設定
-
エクセルのマクロの実行が途中...
-
セルの一部分だけを太字にする方法
-
Excelでセル内の文字をファイル...
-
Excelでランダムで選んだ行を別...
-
エクセルVBAでOUT LOOKメールに...
-
任意のセルに貼り付けをするマ...
-
車番順に平均値を計算したい
-
エクセルの在庫表をマクロで
-
エクセルでランダムな座席表を...
-
【図(1)】の値を【図(2)】【図(...
-
excel定数の違いについて。xlAu...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
-
エクセルファイルを開いた回数...
-
フォルダ内にある全ファイルの...
-
Excelのシート上のShapeにイベ...
-
エクセル シート内の一番下のセ...
-
長い時間かかるマクロが実行中...
-
セルの一部分だけを太字にする方法
-
【エクセル】フリーワード検索...
-
エクセルで特定の行だけ行削除...
-
エクセル:セル内の文字列の最...
-
EXCELのダイアログシートって、...
-
【エクセル】「実行時エラー’10...
-
Excelでセル内の文字をファイル...
-
エクセルで○をつけるマクロ設定
-
エクセル マクロ 一定時間おき...
-
前月分を次月シートに繰越でき...
-
エクセルのワークシート(テン...
-
自分の専門分野の仕事。初見で...
おすすめ情報