2012-04-12 13 views
0

私は複数の投稿やフォーラムを読んでいる、いくつかの本当に簡単なコードを使用して、いくつかのトラブルに実行していますが、問題を見つけることができるようには見えません。ランタイムエラー13

Sub ownership() 
Dim row, column, x, y As Integer 
For row = 2 To 42 
    For column = 4 To 18 
    For x = 2 To 16 
    For y = 5 To 45 
    If ActiveWorkbook.Sheets("orka").Cells(3, row).Text = Left(ActiveWorkbook.Sheets("values").Cells(x, y).Text, ActiveWorkbook.Sheets("orka").Cells(2, row).Value) Then ActiveWorkbook.Sheets("orka").Cells(column, row).Text = "X" 
    Next 
    Next 
    Next 
Next 
End Sub 

どうもありがとう 秒

+0

2つの提案。 **(1)** '.Cells(A、B)'では、Aは行、Bは列です。あなたは彼らの向いている。 **(2)**ほとんどの問題は 'ActiveWorkbook.Sheets(orka))です。セル(2、行).Value'は整数ではありません。エラー13でマクロが停止したら、このセルの値を調べます。 –

+0

ありがとう、私は何か非常に基本的な間違ったと思った... – seba

答えて

0

これは、.Textが読み取り専用のプロパティであるためです。代わりに.Valueを使用してください。あなたは

Dim row, column, x, y As Integer 
0として変数を宣言するときは、しかし、この

MsgBox Range("A1").Text

はVBAでもこの

Option Explicit 

Sub ownership() 
    Dim row As Integer, column As Integer, x As Integer, y As Integer 

    For row = 2 To 42 
     For column = 4 To 18 
      For x = 2 To 16 
       For y = 5 To 45 
        If ActiveWorkbook.Sheets("orka").Cells(3, row).Value = _ 
        Left(ActiveWorkbook.Sheets("values").Cells(x, y).Text, _ 
        ActiveWorkbook.Sheets("orka").Cells(2, row).Value) Then _ 
        ActiveWorkbook.Sheets("orka").Cells(column, row).Value = "X" 
       Next 
      Next 
     Next 
    Next 
End Sub 

を試してみて行うことができます

Range("A1").Text = "Blah Blah"

と言うことはできません

この場合、最後の変数yのみがIntegerとして宣言され、残りはVariantと宣言されます。正しい方法は私が上に述べたようにそれを宣言することです。

HTH

+0

残念ながら、私は左の関数内の.textを置き換えても、残念ながらそれはまだランタイムエラー13を返します。 – seba

+0

私は上記のコードを試しました。今はうまくいく。上からコードを試しましたか? –

+0

はい、_を削除して、if文を1行に入れてください。 コードを動作させるための参照を有効にする必要がありますか? 「Option Explicit」は何を表していますか? – seba

関連する問題