|
>あったら便利と思いついて
便利にしたいなら、徹底的にやるべきでしょう。
一般的に普通のマクロにするより、イベントマクロを作った方が便利になります。
以下の全てをシートモジュールの先頭から入れて下さい。
[使い方]
コピーしたい範囲を「一行かつ単一の範囲数」で選択し、右クリックします。
すると選択範囲が青色で塗り潰され、ステータスバーが出て"コピー回数は 1 回"
と表示します。そのまま右クリックを繰り返すと、回数は増えていきます。
目的の回数まで達したら、その範囲内のどこかをダブルクリックして下さい。
範囲の直下へ回数分だけ値を転記して、セルの色やステータスバー等を元どおり
に戻して終わります。このとき、青色の範囲外をダブルクリックすると、コピー
をせずに元どおりに戻します。
Private Cnt As Long
Private MyR As Range
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
Const St As String = "コピー回数は "
If Not MyR Is Nothing Then
Cancel = True: Cnt = Cnt + 1
Application.StatusBar = St & Cnt & " 回"
Exit Sub
End If
With Target
If .Rows.Count > 1 Then Exit Sub
If .Areas.Count > 1 Then Exit Sub
.Interior.ColorIndex = 5
Set MyR = .Cells
End With
Cancel = True: Cnt = 1
With Application
.DisplayStatusBar = True
.StatusBar = St & Cnt & " 回"
End With
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
If MyR Is Nothing Then Exit Sub
Cancel = True
If Intersect(Target, MyR) Is Nothing Then
GoTo ELine
Else
MyR.Offset(1).Resize(Cnt).Value = MyR.Value
End If
ELine:
With Application
.StatusBar = False
.DisplayStatusBar = False
End With
MyR.Interior.ColorIndex = xlNone
Set MyR = Nothing: Cnt = 0
End Sub
|
|