[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルを1秒ごとに自動で動かす。』(Masa)
動物の行動を1秒ごとに記録するために、いい方がないか探しています。
選択されているセルが1秒ごとに自動で下に降りていき、新しい行動が出たときに、いったん止めて、その行動を記録し、またセルが自動で下に降りていく動きを再開したいのですが、いい方法はありませんか?よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
そもそも、行動を記録って、どんな方法、どんなセンサを使うのでしょう? まさか、人間が張り付いて目視し、1秒毎に手入力、ではないですよね? GPS は室内では拾いにくいし、体温とかは行動とは言わないし…。
いずれにせよ、Excelは表計算アプリなので、リアルタイムの処理には向いていないです。 VB.NET(無料版もあるし、業務用アプリを無料版で作成する事も認められています)等のコンパイル言語を使うべきでしょう。
(???) 2019/07/08(月) 10:26
(Masa) 2019/07/08(月) 11:53
シートにActiveXのボタンを2つ貼ってください。 ボタンを貼った部分は、「ウィンドウ枠の固定」でスクロールしないようにしておくと良いでしょう。(開始と停止ボタンですが、ボタンを押そうとしても1秒で最下行に飛んでしまうので…)
【標準モジュール】 Public dpNext As Date
Public Sub sTimer()
Dim iR As Long
iR = Cells(Rows.Count, "A").End(xlUp).Row + 1
Cells(iR, "A").Formula = "=ROW()-1"
Cells(iR, "B").Activate
dpNext = DateAdd("s", 1, dpNext)
Application.OnTime dpNext, "sTimer"
End Sub
Public Sub sStop()
On Error Resume Next
Application.OnTime dpNext, "sTimer", , False
On Error GoTo 0
End Sub
【シートモジュール】
Private Sub CommandButton1_Click()
dpNext = Now
Call sTimer
End Sub
Private Sub CommandButton2_Click()
Call sStop
End Sub
【ThisWorkbook】
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call sStop
End Sub
シートに直接入力なので、いちいちENTERキーを押す必要があります。 ENTERするのが面倒であれば、ユーザーフォームならキー入力が拾えるし、左右マウスボタン押下も拾えるので、そっちの方が適しているかもです。
(???) 2019/07/08(月) 13:30
【シートモジュール】
Private Sub CommandButton3_Click()
UserForm1.Show vbModeless
End Sub
【UserForm1】 Dim iFlag As Long
Private Sub CommandButton1_Click()
Dim tEd As Single
Dim iR As Long
tEd = Timer
iFlag = 0
While iFlag = 0
With ActiveSheet
iR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.Cells(iR, "A").Formula = "=ROW()-1"
.Cells(iR, "B").Activate
End With
DoEvents
tEd = tEd + 1
While Timer < tEd
DoEvents
Wend
Wend
End Sub
Private Sub CommandButton2_Click()
iFlag = 1
End Sub
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ActiveSheet.Cells(ActiveCell.Row, "B").Value = Button - 1
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
iFlag = 1
End Sub
使い方は、シート上のボタンを押すとフォームが表示されるので、開始ボタンを押します。 その後、フォーム上の何も貼っていない灰色部分をマウスの左右ボタンでクリックすると記録されます。(別のボタンを貼って、ボタンを押すと文字列代入、としてもOK)
(???) 2019/07/10(水) 09:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.