• ベストアンサー

エクセル2000のマクロで、if文が想定通りに動かない

90から93列目にかけて、データが 0又は3~4桁の数字が入っている状態です。 4810,0,0,2430 以下はマクロの抜粋です。 やりたいことは、0でなければ各変数に1を代入し、95列めに合計を入力します。 If Cells(i, 90) <> 0 Then w = 1 If Cells(i, 91) <> 0 Then x = 1 If Cells(i, 92) <> 0 Then y = 1 If Cells(i, 93) <> 0 Then z = 1 Cells(i, 95).Value = w + x + y + z このマクロを実行しますと、実際には0でない列が2列にもかかわらず、95列目に3と入力されてしまいます。1行ずつ実行してみたら、if文の3行目の92列目の判定が変です。 実行中に、カーソルをかざすとCells(1, 92)=0と表示されるのですが、合計を代入するところの y には1が代入されてしまっています。 何か間違っているんだと思いますが、分かりません。よろしくお願いします。

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

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

変数の初期化はされています? 恐らくループを回しているのでしょうが、前のループでyの値が1になっているのでは? If Cells(i, 90) <> 0 Then w = 1 の前に w=0 x=0 y=0 z=0 と入れて見てください。

Freah7FbsD
質問者

お礼

ご回答ありがとうございます。仰るとおりでした。 たいへん勉強になりました。ありがとうございます。

その他の回答 (2)

  • 49ers
  • ベストアンサー率50% (5/10)
回答No.3

小数点以下が入力されていて、表示上0に見えるとか?

Freah7FbsD
質問者

お礼

ご回答ありがとうございます。

  • ahirudac
  • ベストアンサー率46% (84/180)
回答No.1

単純に考えると92列めの「0」が 1.0ではなくO(オー)になっている 2・数字ではなく文字として入力されている というのがあやしいと思うのですが・・・。

Freah7FbsD
質問者

お礼

早速のご回答ありがとうございます。