質問

お世話になります。

早速ですが、
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件)

#2です。

> エラーはないのですが、スペースでエラーになるのでしょうか。
エラーになりますね(なりました)。

「If IsNumeric(minus) = True Then」とか入れた方がよさそうですね。

この回答へのお礼

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

この回答への補足

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

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

エラー値があると質問のエラーが出ます。
確認してください。
以上。

この回答へのお礼

早速有り難うございます。

対象のセルは全て =if(n29="","",m29-m28)のような
式が入っています。
(あるセルに数字があるときだけ引き算をしてこの対象セルに結果を入れる)

ただ、エラーにはなっていませんがスペースは在ります。
エラーはないのですが、スペースでエラーになるのでしょうか。
宜しくお願いします。

この回答への補足

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

う~む?手元に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なのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

エラーにならずに、正常に動いているようですが…
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なのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

こんにちは。

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

では。

この回答へのお礼

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

この回答への補足

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

このQ&Aは役に立ちましたか?0 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集