2013-04-11 83 views
1

我正在写一个Excel宏,并在下面的部分中显示名为“daf”的工作表中的列,并将其与另一个工作表中的单元格进行比较:在Excel宏中的工作表中指定单元格

For i = 2 To 75 
    If Range("the daf!C" + Trim(Str(i))) = Range("scratchpad!Q30") Then 
     notes = notes + Range("scratchpad!P30") 
     Exit For 
    End If 
Next 

问题是它产生的结果是“#Value!”而问题似乎是因为我在表名中有一个空格,因为当我用“scratchpad”替换“daf”时,它不会产生错误。如果我说的是正确的,那么当表单名称中包含空格时,如何引用表单中的单元格?

回答

2

使用

Sheets("the daf").Range("C" & i) 

代替

Range("the daf!C" + Trim(Str(i))) 

实施例:

If Sheets("the daf").Range("C" & i).Value = Sheets("scratchpad").Range("Q30").Value Then

EDIT

如果你仍然想使用你正在使用的方法,然后尝试这个

Range("'the" & " " & "daf'!C" & i) 
+0

谢谢 - 它的工作!我想知道为什么它允许我使用我使用的原始方式?此外,感谢您指出“C”和我的标记,因为现在我可以浏览我的工作表并简化我做过的事情。 – 2013-04-11 18:45:44

+0

原来使用的方式没有错。只是为了简单起见,我们不使用这种方式。但是,如果您看到稍后在帖子中添加的修改,您会注意到需要填充空格。因此它比使用'Sheets()'方法更复杂 – 2013-04-11 18:48:11

+0

实际上,尽管我使用了你描述的表单方法,但我发现我原来的错误并不是在表单名称周围添加单引号。即它应该是例如:Range(“'daf'!A1”) – 2013-04-15 12:23:55

相关问题