電子書籍の厳選無料作品が豊富!

If Cells(retsu(n) + 3, zentai(n)).Value + 10 < Cells(retsu(n) + 3, zentai(n) + gyou(n)).Value Then

二つのセルの大きさを比較する分を作ったのですが、オブジェクトの定義エラーと表示されます。いったいどこがだめだかさっぱりわからないのですが、皆さんの知恵を貸してください。。

A 回答 (4件)

こんにちは。



> オブジェクトの定義エラーと表示されます。

Cells プロパティーの書式は、

  Cells(RowIndex, ColumnIndex)

ですが、行列のIndex には範囲があって、

  ・RowIndex : 1~65536
  ・ColumnIndex: 1~256

でなければなりません。例えば、zentai(n) + gyou(n) の計算結果で
ColumnIndex を指定しているわけですが、この範囲を超えてませんか?

あるいは、計算結果が 0 になってしまっているとか?

、、、RowIndex のところに retsu(n) とあるのも気になると言えば、なり
ますが。行列番号の指定が逆になってないですか?

取り合えず、他の方がコメントされているように、変数の中身を出力して
確認するのが良いでしょう。

VBE でイミディエイトウインドウを表示して、下記のコードでチェックし
てみて下さい。

' イミディエイトウインドウに変数の値を表示してみる
Debug.Print "RowIndex:=" & retsu(n) + 3; " ColumnIndex:=" & zentai(n)
Debug.Print "RowIndex:=" & retsu(n) + 3; " ColumnIndex:=" & zentai(n) + gyou(n)
If Cells(retsu(n) + 3, zentai(n)).Value + 10 < Cells(retsu(n) + 3, zentai(n) + gyou(n)).Value Then
    • good
    • 0

>デバックの時に値が代入されているか確認したところ各配列には値がしっかり入っています。

なぜだめなんでしょうか。。
その代入されている値を具体的に教えてください。
それと、その比較しようとしているセルに入っている値を具体的に押してください。
    • good
    • 0

えっと、以下のプログラムは動きますんでIF文がおかしいわけではないと思います。



If Cells(1, 1).Value < Cells(1, 2) Then
MsgBox "Cell(1,1)のほうがちっちゃい"
ElseIf Cells(1, 1).Value = Cells(1, 2) Then
MsgBox "Cell(1,1)とCell(1,2)は一緒"
Else
MsgBox "Cell(1,2)のほうがちっちゃい"
End If

なので、使用している変数(retsu()、zentai()、gyou())に問題があると思います。
retsu()、zentai()、gyou() の値を出力して確認してみてください。
    • good
    • 0

何ともいえませんが、


retsu()、zentai()、gyou()はそれぞれ定義されていますか?

この回答への補足

皆さん返信ありがとうございます。
デバックの時に値が代入されているか確認したところ各配列には値がしっかり入っています。なぜだめなんでしょうか。。

補足日時:2006/07/05 19:23
    • good
    • 0

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