• ベストアンサー

値の入っているセルをカウントするマクロの作成

マクロ初心者です。 アクティブセルから一つ上の列に、値が入っているセルが何個あるのかカウントするマクロを作成したいのですが、うまくいかずに困っております。 すみませんが、よろしくお願いします。 参考用画像の解説 【ActiveCell】セルから上の列を範囲指定。 1、2、3と数字が入っているセルが何個あるのかカウント。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.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

sow_85
質問者

お礼

回答ありがとうございました。 カウントするように作成できました!

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

あぁ、ごめんなさい「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)
回答No.2

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)
回答No.1

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

関連するQ&A