• ベストアンサー

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 でエラーになります。 型は「数値」で問題ないように思うのですが。 足らなければ指摘下さい、調べて追加します。 宜しくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

  対象となるセル(M5~M59)には式が入っていて、 その結果としてエラー値(#DIV/0!とか#VALUEとか#N/A等々)が返っているセルがありませんか? エラー値があると質問のエラーが出ます。 確認してください。 以上。

nagahaha
質問者

お礼

早速有り難うございます。 対象のセルは全て =if(n29="","",m29-m28)のような 式が入っています。 (あるセルに数字があるときだけ引き算をしてこの対象セルに結果を入れる) ただ、エラーにはなっていませんがスペースは在ります。 エラーはないのですが、スペースでエラーになるのでしょうか。 宜しくお願いします。

nagahaha
質問者

補足

皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。

その他の回答 (4)

  • riveron77
  • ベストアンサー率48% (180/370)
回答No.5

#2です。 > エラーはないのですが、スペースでエラーになるのでしょうか。 エラーになりますね(なりました)。 「If IsNumeric(minus) = True Then」とか入れた方がよさそうですね。

nagahaha
質問者

お礼

何回も有り難うございます。 スペースでエラーになるというので原因は分かったので明るさが出た感じです。 対応策で教えていただいたことをやってみます。 兎に角今は触れませんので、後ほど報告させてください。 有り難うございました。

nagahaha
質問者

補足

作成者に確認しました。 WindowsXP、excel2003では スペースが在っても問題なく動くらしいです。 (スペースは対象になりませんので色は付きませんが) 兎に角私の環境でやってみます。

回答No.3

う~む?手元に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 とか書くとどうなるでしょうか?

nagahaha
質問者

お礼

早速有り難うございます。 いろいろな書き方があるのですね、 兎に角皆さんに教わったことをやってみます。 後ほど報告します。 有り難うございました。

nagahaha
質問者

補足

皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。

  • riveron77
  • ベストアンサー率48% (180/370)
回答No.2

エラーにならずに、正常に動いているようですが… 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が入力されているセルが赤くなる。 ご参考まで。

nagahaha
質問者

お礼

早速有り難うございます。 作成者も全く問題なく動くと言っています。 Windows98と、excel97の組み合わせでしょうか。 兎に角皆さんに教えていただいたことをやってみます。 後ほど報告いたします。 有り難うございました。

nagahaha
質問者

補足

皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  手元にExcel97が無いので、自信がありませんが、  minus < 0   ↓  minus.value < 0  としたら、どうでしょう。 では。

nagahaha
質問者

お礼

早速有り難うございます。 今確認できないので、 後ほど確認して報告させていただきます。 有り難うございました。

nagahaha
質問者

補足

皆様どうも有り難うございました。 早速イロイロ教わったことを種してみました。 結果は minus.valueとminus.textは同じ(エラー)でしたが、 val(minus)がうまくエラーを回避できました。 なぜwindows98とexcel97で駄目で windowsXPとexcel2003ではokなのかは分かりませんが、 今回いい勉強をしました。 お礼が掛けないので、ここに書かせていただけました。 皆様どうもお世話になりました。