プロが教えるわが家の防犯対策術!

マクロ初心者です。
アクティブセルから一つ上の列に、値が入っているセルが何個あるのかカウントするマクロを作成したいのですが、うまくいかずに困っております。
すみませんが、よろしくお願いします。

参考用画像の解説
【ActiveCell】セルから上の列を範囲指定。
1、2、3と数字が入っているセルが何個あるのかカウント。

「値の入っているセルをカウントするマクロの」の質問画像

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/28 20:57

あぁ、ごめんなさい「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))
    • good
    • 0

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
    • good
    • 0

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. …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!