フィルをマクロで操作してみる

f:id:Infoment:20191225224904p:plain

先日職場で、こんな操作ができることを教わった。
1.A1に「1」と入力する。
2.連続データの作成を選択。
f:id:Infoment:20191225221353p:plain

3.列方向に停止値20を設定し、OKを押す。
f:id:Infoment:20191225221531p:plain

4.連続データが作成される。
f:id:Infoment:20191225221602p:plain

知らなかった。これは便利だ。折角なので、マクロの記録で見てみる。

Sub Macro1()
    Selection.DataSeries Rowcol:=xlColumns, _
                         Type:=xlLinear, _
                         Date:=xlDay, _
                         Step:=1, _
                         Stop:=20, _
                         Trend:=False
End Sub

初期値を省略すると、こうなる。

Sub Macro1()
    Selection.DataSeries Rowcol:=xlColumns, _
                         Stop:=20
End Sub

これは、何かと使えそうだ。引数を与える形にすると、例えばこうなる。

Sub SetDataSeries(destination_range As Range, _
         Optional dsStart As Long = 1, _
         Optional dsRowcol As XlRowCol = xlRow, _
         Optional dsType As XlTrendlineType = xlLinear, _
         Optional dsDate As XlDataSeriesDate = xlDay, _
         Optional dsStep As Long = 1, _
         Optional dsStop As Long = 10, _
         Optional dsTrend As Boolean = False)

    With destination_range
        .Value = dsStart
        .DataSeries dsRowcol, dsType, dsDate, dsStep, dsStop, dsTrend
    End With
End Sub

こちらでテストしてみよう。

Sub Test()
    SetDataSeries Range("A1"), , xlColumns
End Sub

結果、このようになった。
f:id:Infoment:20191225224619p:plain

これは、もう少し作りこむと、それなりに使えるような気がする。

というわけで、明日に続きます。

参考まで。