質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

0回答

311閲覧

excelのVBAコピー途中で状況が変わる

sigefuji

総合スコア125

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/05/29 07:31

実現したいこと

OnTimeStartで1秒ごとに、7行目の値を、8行目以下にコピーする処理をしています。
処理の内容:
OnTimeイベントを1秒ごとに発生し、イベント発生時に、7行目のセルを、8行目以下に順次コピーします。1行コピーしたあとは、現在の書き込み位置を示すポインタをセルa7に更新します。
ただし、実行前に、セルa7に初期値0をセットしておきます。
シートにコピーされる状況を観測します。

実際にコピーする内容は、コードには示していない、別途のRSS関数でリアルタイムに7行目にセットされる値です。質問では、この部分を省略しても、時間に更新記録だけのコピーで状況が再現できるので、省略しています。

イベント処理の問題の追及は小生にとって困難です。
コードに本質的な問題はどこかにあるでしょうか。このコードはネットから取得しました。コードの意味するところはわかります。

発生している問題・エラーメッセージ

実行したところ、59行目までは
60行目からコピーの状態が変わります。

エラーメッセージはなし

該当のソースコード

excel vba

1Option Explicit 2 3Public mOnTime As Date 4 5Sub TimerProc() 6 Dim ct 7 Dim serial As Long 8 9 Range("c7") = Now 10 Range("B7") = Now 11 12 ct = Cells(7, 1) 13 ct = ct + 1 14 Cells(7 + ct, 1) = ct 15 16 Cells(7 + ct, 2) = Cells(7, 2) 17 Cells(7 + ct, 3) = Cells(7, 3) 18 Cells(7 + ct, 4) = Cells(7, 4) 19 20 Cells(7, 1) = ct 21End Sub 22 23 24Sub OnTimeStart() 25 Dim serial 26 Call TimerProc 27 28 mOnTime = Time() + TimeSerial(0, 0, 1) 29 Call Application.OnTime(mOnTime, "OnTimeStart") 30End Sub 31 32Sub OnTimeStop() 33 '同一のprocedureとEarliestTimeがないとエラーになる 34 On Error Resume Next 35 Call Application.OnTime(mOnTime, "OnTimeStart", , False) 36End Sub 37 38

試したこと

セルb7の書式を、セルの書式設定 ユーザ定義 mmdd hhmmss にしていますが、標準に戻しても同じです。。

補足情報(FW/ツールのバージョンなど)

excel2021、windows10pro
添付画像は状況が変化する箇所 529.jpg
コピーを開始する行付近  529b.jpg
イメージ説明

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bebebe_

2023/05/29 07:57

単純に60行目からの書式設定がされていないというわけではないですか?
sigefuji

2023/05/29 10:01

ご返事ありがとうございます。 ご指摘の通りで、59行目までの書式はユーザ設定ですが、60行目からの書式は標準でした。 時間はシリアル値であることはわかりますが、単にセルの代入では、書式はコピーされないのですね。 書式までコピーする方法を探さねばなりません。
tatsu99

2023/05/29 11:07

>書式までコピーする方法を探さねばなりません。 該当列を選択して書式設定しておけば、良いと思います。 そうすると、その列の全行が、その書式になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問