[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『繰り返し処理がうまくいかないです。』(ドクターもこみち)
こんばんは。繰り返し処理について、うまくいかなんです。
セルK2からアクティブセルが空白になるまで、ループ
処理をしたいです。セルK2から空白でなければ、下に移動
というコードを書き、そのついでに#N/Aの文字列があった場合
それを変数eraに個数1として加え、#N/Aの数を最終的に
何個だったか、報告するというものなんですが、エラー内容
として、「LOOPに対してのDOが見つかりません」と出てしまい
ます。
Dim era As Integer
era = 0
Range("K2").Select
Do Until ActiveCell = Empty
If ActiveCell = "#N/A" Then
era = era + 1
ativecell.Offset(1, 0).Activate
Else
ativecell.Offset(1, 0).Activate
Loop
MsgBox "エラー値を" & era & "個、発見しました。"
Loopの練習で書いているのなら
activecell.offset(1,0).Activate Else
の二行を削除して End If に書き換えればOKでしょう...
Sub test() On Error Resume Next MsgBox Range("k2",Range("k" & Rows.Count).End(xlUp)).SpecialCells(-4123,16).Count End Sub
なんてこと出来ませんか? (seiya)
activecell.offset(1,0).Activate
Else
を削除して、end ifを追加したのですが、バグはLoopを指しているようです。
あとtestプログラムを実行しても、何を起こらなかったんですが、これは
どういうプログラムになるのでしょうか。
今、考えている事は、K2からKの最終行までの「#N/A」の個数を集計して
最終メッセージボックスとして表示させたいと思っています。そこでK2か
ら、一つずつセル内の値が「#N/A」かどうか調べ、セルを1つ下にずらし、
また調べというループを作りました。しかし、うまくいかなかったという
事なんです。(−_−:)
やはり実行すると、LOOPが黄色になり、エラー「型がちがいます。」と
表示。デバッグモードになります。
「#N/A」ではなく、「大阪」と入れると、きちんと大阪の個数を数える
んですが、#N/Aの個数を数える方法がないのでしょうか。なお、#N/Aも
含めて、すべて値の貼り付けとして処理しています。(ドクターもこみち)
Sub test()
Dim era As Integer
era = 0
Range("K2").Select
Do
If ActiveCell = "#N/A" Then
era = era + 1
End If
ActiveCell.Offset(1, 0).Activate
Loop While ActiveCell <> ""
MsgBox era
ActiveCell.Text = "#N/A" または IsError(ActiveCell.Value) では? (seiya)
せんという表記が出てしまいます。
Loop While ActiveCell <> "" (ドクターもこみち)
これ実行してみてください。
Sub test() Dim r As Range, era As Long For Each r In Range("k2",Range("k" & rows.Count).End(xlUp)) If IsError(r.Value) Then era = era + 1 Next MsgBox era (seiya)
私はこれで落ちます。 明日は投稿できませんので... (seiya)
文章を読解してみますので、もし間違いがあれば、指摘頂けると
幸いです。
For Each r In Range("k2",Range("k" & rows.Count).End(xlUp))
If IsError(r.Value) Then era = era + 1
★事前に定義として変数rを範囲としてみます。そして、rの中に
K2からKの最終行までの範囲を代入。→「In」というのは、=と
同義なのでしょうか。
IF構文を指して、rの範囲内にエラー値があった場合にその数を
数える事ができるのでしょうか。とすると、エラー値以外で例え
ば、文字の「大阪」の個数を数えようとした場合は、下記のよう
になりますか?
For Each r In Range("k2",Range("k" & rows.Count).End(xlUp))
If r.Value="大阪" Then era = era + 1
ありがとうございました。 (ドクターもこみち)
1) For Each r In Range("k2, range("k" & rowns.count).end(xkup) 変数r (Range型)で K2:Kn (n=最終行) 範囲をループ
2) If IsError(r.Value) Then era = era + 1 セルがエラー値であるかどうか判定、Trueであれば era + 1
私は、Propertyを極力省略しないようにしています。 時には、省略したことが原因で不測の結果が導かれることがありますので。 (seiya)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.