VBA运行时错误1004

时间:2013-08-12 14:22:59

标签: vba range runtime-error

我对VBA有点新,并且遇到了我无法解决的运行时错误。我有以下代码

Dim vRange As Range
Sheets("Vert E").Cells.FormatConditions.Delete
With Sheets("Vert E")
    Set vRange = .Range(.Cells(2, 2))
End With

vRange.Select

最后一行vRange.Select抛出一个错误,指出运行时错误'1004':应用程序定义的错误或对象定义的错误。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

有几件事:

1)删除围绕.Cells(2,2)的.Range(_):这是不必要的

2)进一步向上移动

3)Range.Select只能在Range的工作表是活动工作表时使用。因此,要确认它,请在vRange.Select上方添加类似.Activate,然后将End With移至vRange.Select下方。

像:

Dim vRange As Range
With Sheets("Vert E")
    .Cells.FormatConditions.Delete
    Set vRange = .Cells(2, 2)
    .Activate
    vRange.Select
End With

希望有所帮助

答案 1 :(得分:1)

更短更整洁的方式

 Dim vRange As Range
 Dim ws as Worksheet
 Set ws = Sheets("Vert E")
 ws.Cells.FormatConditions.Delete
 Set vRange = ws.Cells(2, 2)
 ws.Activate
 vRange.Select

注意:avoid using Select

更新

要将某些格式应用于单元格而不选择它,请使用

以下示例中的

更改了单元格的颜色

vRange.Interior.Color = RGB(200, 100, 50)

在VBE中输入vRange.Interior.并使用VBE Intellisense,它可以通过列出Interior类的可用属性来帮助你。

将格式应用于单元格的最佳方法是在recording a macro时执行此操作,然后在VBE中编辑代码。