- ベストアンサー
値の入っているセルをカウントするマクロの作成
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
アクティブセル位置から上すべての値(数式ではない)が入力されているセルを数えるとして。 Sub macro() With ActiveCell MsgBox .Offset(1 - .Row).Resize(.Row - 1).SpecialCells(xlCellTypeConstants).Cells.Count End With End Sub 数値のみ数えるのであれば、Count関数がベストです。(文字も混ざっているなら、CountA関数を使います。) Sub macro2() With ActiveCell MsgBox WorksheetFunction.Count(.Offset(1 - .Row).Resize(.Row - 1)) End With End Sub
その他の回答 (3)
- mt2008
- ベストアンサー率52% (885/1701)
あぁ、ごめんなさい「Set」が抜けていた。 誤:rTarget = Range(Cells(1, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column)) ↓ 正:Set rTarget = Range(Cells(1, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column))
- mt2008
- ベストアンサー率52% (885/1701)
Excelの話でいいんですよね? WorksheetFunction.Countを使いましょう Sub Sample() Dim rTarget As Range If ActiveCell.Row = 1 Then Exit Sub rTarget = Range(Cells(1, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column)) MsgBox (Application.WorksheetFunction.Count(rTarget)) End Sub
- FEX2053
- ベストアンサー率37% (7995/21381)
Sub Test() Dim CHK_A As Range, i As Long i=0 For Each CHK_A In Selection if CHK_A.Value > 0 then i=i+1 Next CHK_A End Sub For Eachを使えば、こんな感じじゃないですか? 空白セルの.valueはゼロで評価されると記憶してますので。 テストはしてないので、詳細はこちらを参照してみて下さい。 http://officetanaka.net/excel/vba/tips/tips111b.htm
お礼
回答ありがとうございました。 カウントするように作成できました!