2012-04-12 70 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

兩個建議。 **(1)**在'.Cells(A,B)'中,A是行,B是列。你有他們相反。 **(2)**幾乎肯定問題是'ActiveWorkbook.Sheets(「orka」)。單元格(2,行)。值不是一個整數。當宏停止錯誤13時,檢查該單元格的值。 – 2012-04-12 19:27:33

+0

非常感謝,我認爲我做了一些非常基本的錯誤... – seba 2012-04-13 10:41:54

回答

0

這是因爲.Text是一個只讀屬性。改爲使用.Value。你不能說

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

但是,您可以做到這一點

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 

此外,當您變量聲明爲

Dim row, column, x, y As Integer 

然後在這種情況下只有最後一個變量y將被聲明爲整數,其餘的將被聲明爲Variant。正確的方法是聲明它像我上面所做的那樣。

HTH

+0

謝謝,不幸的是,它仍然返回運行時錯誤13,即使我替換左側函數中的.text。 – seba 2012-04-12 15:45:27

+0

我剛剛試過上面的代碼。現在它工作正常。你是否從上面嘗試了代碼? – 2012-04-12 15:51:20

+0

是的,只是刪除_並將if語句放在一行中。 我是否需要激活某個引用才能使代碼正常工作? 「Option Explicit」代表什麼? – seba 2012-04-12 15:58:41