|
例えばこんな感じで、どうでしょーか ?
ボタンを押す代わりに、右クリックイベントで 200列以内 の任意のセルを
右クリックしたとき、記録と停止を問い合わせてから切り替えます。
転記はダブルクリックにて行います(シングルクリックイベントが無いので)。
状態の表示には、ステータスバーを使います。
以下の全てのコードをシートモジュールの先頭から入れて、いったん他の
シートを開いてから戻って下さい。初めに「待機中」と表示します。
Private MyR As Range
Private Sub Worksheet_Activate()
Set MyR = Nothing
With Application
.DisplayStatusBar = True
.StatusBar = "●●● 待機中 ●●●"
End With
End Sub
Private Sub Worksheet_Deactivate()
With Application
.StatusBar = False
.DisplayStatusBar = False
End With
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim Cnt As Integer
If MyR Is Nothing Then Exit Sub
Cnt = WorksheetFunction.CountA(MyR)
If Cnt = MyR.Count Then
MsgBox "これ以上、値の転記をすることはできません", 48
Exit Sub
End If
Cancel = True
MyR.Cells(Cnt + 1).Value = Target.Value
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
With Target
If .Cells(1).Column > 200 Then Exit Sub
Cancel = True
If MyR Is Nothing Then
If MsgBox(.Address(0, 0) & " を基点にしますか", 36) = 6 Then
Set MyR = Range(.Cells(1), Cells(.Row, 256))
Application.StatusBar = "☆☆☆ 記録中 ☆☆☆"
End If
Else
If MsgBox("記録を終了しますか", 36) = 6 Then
Set MyR = Nothing
Application.StatusBar = "★★★ 停止中 ★★★"
End If
End If
End With
End Sub
|
|