VBA运行时错误1004

VBA运行时错误1004,vba,range,runtime-error,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”的错误:应用程序定义的错误或对象定义的错误。有什么想法吗?有几

我对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”的错误:应用程序定义的错误或对象定义的错误。有什么想法吗?

有几件事:

1) 删除.单元格(2,2)周围的.Range(u):它是不必要的

2) 再往上移动一点

3) 范围。仅当范围的工作表是活动工作表时,才能使用Select。因此,若要确认,请添加一个like。在vRange上方激活。选择,然后将端点移动到vRange.Select下方

比如:


希望这有助于缩短和整洁的工作方式

 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
注:

更新:

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

下面的示例更改单元格的颜色

在VBE中,只需键入
vRange.Interior.
并使用VBE Intellisense,它将通过列出Interior类的可用属性对您有所帮助


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

接下来的问题是,我实际要做的是将条件格式规则应用于一系列单元格。范围的范围是由我使用的函数计算的。您提到要避免使用select。是否有其他方法应用条件格式?@user2539552您需要
激活
工作表,以便能够使用
选择
方法。我不能给出更好的解释,因为这只是方法的工作原理,甚至MSDN也不能提供更好的解释。因此,简单地说,当使用
Select
方法时,您必须始终确保您正在处理活动工作表。见更新answer@user2539552但正如mehow所说,当您完成宏并希望用户留在工作簿中的某个位置时,实际上只需要使用Select。因为你确实做了一些你不需要也不应该使用的事情。
 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
vRange.Interior.Color = RGB(200, 100, 50)