|
こんなのでは
Option Explicit
Public Sub Sample5()
'
Dim i As Long
' Dim lngTop As Long
Dim lngCount As Long
' '操作するシートを指定
' With ActiveSheet
' 'データ先頭行位置を指定
' i = ActiveCell.Row '変更
' '先頭行位置を保存
' lngTop = i
'
' '現在のセルより上のデータが数字でなくなるまで繰り返し
' i = i - 1
' Do Until .Cells(i, "A").Value = "" '←ここをどう変更すれば?
' 'もし、現在の値が数字でなくなったら
' If Not IsNumeric.Cells(i, "A").Value Then '???
' '数式を出力
' .Cells(i, "A").Formula _
' = "=Sum(A" & i & ":A" & (lngTop - 1) & ")"
' End If
' '操作行を更新
' i = i - 1
' Loop
' End With
'ActiveCellを基準とする
With ActiveCell
'データ行数の初期値を設定
lngCount = 0
'現在のセルより上のデータが数字でなくなるまで繰り返し
i = i - 1
Do Until .Row + i = 0
'操作行が数値無く、若しくはEmpty値ならDoを抜ける
If (Not IsNumeric(.Offset(i).Value)) Or IsEmpty(.Offset(i).Value) Then
Exit Do
Else
'データ行数をカウント
lngCount = lngCount + 1
End If
'操作行を更新
i = i - 1
Loop
'数式を出力
.FormulaR1C1 = "=Sum(R[-" & (lngCount) & "]C:R[-1]C)"
End With
End Sub
|
|