2016-06-27 14 views
2
と比較

は、コードの単にこのラインを持っている:ファイル名を指定して実行時エラー13 - 以下に示すように、真

If Cells(L, i).Value = True 

は、私は、次のエラーメッセージが表示されます。私はこれを取得する理由

Run Time Error 13. Type mismatch. 

誰かが私に言うことができますエラーメッセージ? Type mismatchエラーがここで発生する可能性がある理由(私の知っていること)

=IF(OR($O11="";$CJ11=0;AH$6<$CJ11);"";IF($CJ11=AH$6;TRUE;IF($O11="S";TRUE;IF(OR(AND(RIGHT($O11;1)="M";$O11<>"M");RIGHT($O11;1)="S");IF(MOD(AH$6-$CJ11;LEFT($O11;LEN($O11)-1)*IF(RIGHT($O11;1)="M";4;1))=0;TRUE;FALSE);IF($O11="M";IF(MOD(AH$6-$CJ11;4)=0;TRUE;FALSE);IF(RIGHT($O11;1)<>"A";MOD(AH$6-$CJ11;$O11)=0;FALSE)))))) 
+0

セルの値とは何を比較しますか?文字列 '' True ''と比較したいですか?ここで、 'True'はブール型です –

+1

@MincongHuang興味深いことに、セルの内容が文字列' true'( '= 'true')であっても、式は真に評価されます。私は別の言語バージョンで何が起こるかわからない。 – arcadeprecinct

+0

ああ、そうです。 @arcadeprecinct –

答えて

2

2つの理由:

このコラムLは、空のセルなど、いくつかの式のいずれかを持っています。

  1. Lまたはiは自然数ではありません。修正:引数が自然数であることを確認します。 (たとえば、Lが範囲の場合は、L.Rowを使用してください)
  2. セルにエラーがあります。修正(エラーを削除できない場合):

    If Not IsError(Cells(L, i).Value) Then 
        If Cells(L, i).Value = True Then 'you could also omit the "= True" 
         'do stuff 
        End If 
    End If 
    

    VBAにはレイジー評価がないため、テストを分割する必要があります。

あなたが間違ったセルを見ている可能性があります。あなたの質問で "列L"を書いたが、参照するセルは行Lの列iにある。

+0

L = 9 i = 24、このセルが空であるのを参照してください。 –

+0

@JimmyJimmそれは奇妙です、あなたの問題を再現できませんでした。エラーの原因となるセル内容の簡単な例を見つけることができますか?他の人が使うことができる数式のように。あなたが問題にしている数式は読みにくく、他の人はそれを評価することはできません。 – arcadeprecinct

+0

@JimmyJimm「タイプミスマッチ」を作成できました。間違ったセルを参照した可能性があります。私の編集を参照してください。 – arcadeprecinct

関連する問題