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