- ベストアンサー
VBA 型が一致しないエラー
お世話になります。 早速ですが、 2003で作ったというexcelファイルを貰い、 動かしたところ、標題のようなエラーが出ます。 確認したところ作成環境は、 WindowsXPSP2、excel2003 そして、私の環境はWindows98SE、excel97です。 どのようなことでしょうか。 For Each minus In Sheets("結果").Range("m5:m59") If minus < 0 And minus.Interior.ColorIndex <> 3 Then With minus.Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With End If Next (申し訳ありません、見苦しさはお許し下さい) の If minus < 0 And minus.Interior.ColorIndex <> 3 Then でエラーになります。 型は「数値」で問題ないように思うのですが。 足らなければ指摘下さい、調べて追加します。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
対象となるセル(M5~M59)には式が入っていて、 その結果としてエラー値(#DIV/0!とか#VALUEとか#N/A等々)が返っているセルがありませんか? エラー値があると質問のエラーが出ます。 確認してください。 以上。
その他の回答 (4)
- riveron77
- ベストアンサー率48% (180/370)
#2です。 > エラーはないのですが、スペースでエラーになるのでしょうか。 エラーになりますね(なりました)。 「If IsNumeric(minus) = True Then」とか入れた方がよさそうですね。
お礼
何回も有り難うございます。 スペースでエラーになるというので原因は分かったので明るさが出た感じです。 対応策で教えていただいたことをやってみます。 兎に角今は触れませんので、後ほど報告させてください。 有り難うございました。
補足
作成者に確認しました。 WindowsXP、excel2003では スペースが在っても問題なく動くらしいです。 (スペースは対象になりませんので色は付きませんが) 兎に角私の環境でやってみます。
- osu_neko09
- ベストアンサー率48% (56/115)
う~む?手元にWindows98SE、excel97という環境は無いので自信は無いですが。minus が セルそのものとして扱われているのでしょうか・・・。No1、akina_lineさんの方法でもだめなら、 > If minus < 0 And minus.Interior.ColorIndex <> 3 Then If Val(minus.Value) < 0 And minus.Interior.ColorIndex <> 3 Then とか If Val(minus.Text) < 0 And minus.Interior.ColorIndex <> 3 Then とか書くとどうなるでしょうか?
お礼
早速有り難うございます。 いろいろな書き方があるのですね、 兎に角皆さんに教わったことをやってみます。 後ほど報告します。 有り難うございました。
補足
皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。
- riveron77
- ベストアンサー率48% (180/370)
エラーにならずに、正常に動いているようですが… Excelは97ですが、OSが違うのでなんとも… ・WinXP Home SP3 ・Excel97 SR-2 ・「結果」シートのM5~M59に-100、-90…(略)…-10、0、10…(略)…90、100、-100、-90…って感じに数値を入力。 ・VBA側「ThisWorkBook」にコード貼り付け。以下参照。 Option Explicit Public Function Test() Dim minus For Each minus In Sheets("結果").Range("m5:m59") If minus < 0 And minus.Interior.ColorIndex <> 3 Then With minus.Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With End If Next End Function ◎結果:-100~-10が入力されているセルが赤くなる。 ご参考まで。
お礼
早速有り難うございます。 作成者も全く問題なく動くと言っています。 Windows98と、excel97の組み合わせでしょうか。 兎に角皆さんに教えていただいたことをやってみます。 後ほど報告いたします。 有り難うございました。
補足
皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 手元にExcel97が無いので、自信がありませんが、 minus < 0 ↓ minus.value < 0 としたら、どうでしょう。 では。
お礼
早速有り難うございます。 今確認できないので、 後ほど確認して報告させていただきます。 有り難うございました。
補足
皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。
お礼
早速有り難うございます。 対象のセルは全て =if(n29="","",m29-m28)のような 式が入っています。 (あるセルに数字があるときだけ引き算をしてこの対象セルに結果を入れる) ただ、エラーにはなっていませんがスペースは在ります。 エラーはないのですが、スペースでエラーになるのでしょうか。 宜しくお願いします。
補足
皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。