今回は【´・ω・`】と(●`ε´●)の二人のキャラはちょっとお休みです。
くまぷーの無知より、バグ入りコードを公開してしまいました。
バグはどこに潜んでいたかというと受験者数を求めるコードの
ところです。
くまぷーは受験者数を求めるのに以下の考えを用いました。
(1)受験していれば何かしらの点数がつく。
(2)ならば、その生徒の得点欄には何かしらの
点数が入力される。
(3)従って受験した生徒の得点欄は空欄ではない。
(4)従って空欄でないセルの数を数えれば受験者数が
求められる。
・・・よって以下のコードを書きました。(得点欄がD8:D52の場合)
%受験者数=0
For %i = 8 To 52
If Cells(%i, 4) <> "" Then
%受験者数 = %受験者数 + 1
End If
Next
_| ̄|○ うぐぅ・・・・
ところがこれではダメなんです。三四郎は0と空欄の区別がつかないんですね・・・。
例えばA1に1、A2に2、A3に3、A4に4、A5に0として以下のコードを
実行してみると・・・4になります。
%cnt = 0
For %i = 1 To 5
If Cells(%i, 1) <> "" Then
%cnt = %cnt + 1
End If
Next
MsgBox (%cnt)
・・・0と入力されていても三四郎は""だと思ってしまうんです・・・。
エクセルならば・・・5です。
Sub Test()
cnt = 0
For i = 1 To 5
If Cells(i, 1) <> "" Then
cnt = cnt + 1
End If
Next
MsgBox cnt
End Sub
エクセルならこれでよかったんですが・・・。
ゲッ☆(゜ュ)с=(`´メ おい、三四郎を甘く見るなよ!!
三四郎ならばこうしなければいけないんですね・・・。
%cnt = 0
For %i = 1 To 5
If Not IsBlank(Cells(%i, 1)) Then
%cnt = %cnt + 1
End If
Next
MsgBox (%cnt)
勉強になりましたぜい(^。^)
数値以外は入らない、という前提なら、
If Exact(Cells(%i,1),"")=false Then
でも良さそうですね。
ただ、悪児なら、
%suu = CountNum(Range("A1:A5"))
としますが。(^^)ゞ
投稿情報: 悪児 | 2007年4 月17日 (火曜日) 午後 09時52分
早速のコメント、ありがとうございます。
今回のように「excelとちょっと違う」という
ようなところが、くまぷーの盲点です。(^^ゞ
まさか、三四郎が0と""の区別がつかないなんて思ってもいませんでした。
>%suu = CountNum(Range("A1:A5"))
このような書き方ができないんですね・・・。
やはり、JustSystemは三四郎マクロの
本をだすべきかな~。
でも、出されちゃうと個人でこのように
三四郎マクロのブログを作ったりする
楽しみがなくなちゃうし・・・。
痛し痒しですね。
このようなことに躓かなければ
べべちゃんの作った(5)のやたらに
長いコードをサブルーチンを
使ってコンパクトにする予定でした・・・。
投稿情報: くまぷー | 2007年4 月17日 (火曜日) 午後 10時22分
エクセルマクロでも、
suu = Application.WorksheetFunction.Count(Range("A1:A5"))
で、できるのではないでしょうか?
いちいち、
Application.WorksheetFunction.
を書くのが面倒ですが。(^^)ゞ
投稿情報: 悪児 | 2007年4 月17日 (火曜日) 午後 11時03分
>で、できるのではないでしょうか?
もちろん、できます。(^^ゞ
「このような書き方ができないんですね・・・。」という発言の趣旨は
悪児さんのような書き方が、くまぷーには
できない・・・という意味でエクセルではできないという意味ではありません。(^^ゞ
舌足らずでした。
投稿情報: くまぷー | 2007年4 月18日 (水曜日) 午前 03時18分
Hmm is anyone else encountering problems with the pictures on this blog loading? I'm trying to figure out if its a problem on my end or if it's the blog. Any responses would be greatly appreciated.
www.chiguna.com http://www.chiguna.com/
投稿情報: www.chiguna.com | 2013年10 月31日 (木曜日) 午前 05時26分