Excel VBA将多个单元格设置为相同的值

我想将一个工作表上的每个八分之一的单元格设置为另一个工作表中一个单元格的值。 我在这里写了这个:

Sub xx() For i = 5 To 45 Step 8 Set ThisWorkbook.Sheets("Sheet5").Cells(i, 3).Value = ThisWorkbook.Sheets("Sheet7").Cells(13, 31).Value Next i End Sub 

如果我尝试运行它,它会给我一个下标超出范围的错误。 Sheet5也被命名为Binomial Sheet ,我必须以不同的方式引用它吗? 还有其他的方法来完成这个吗?

尚未提到为多个单元格设置相同值的选项:

 ActiveSheet.Range("A1,B2,C3:D4").Value = "SomeValue" 

如果您只是试图以这种方式将一个单元格的值设置为另一个单元格的值,则不需要使用Set属性 – 对于不是对象的值。

此外,ThisWorkbook引用macros的地方,但不适合以这种方式调用。

因此,我会给: ActiveWorkbook.Sheets("Sheet5").Cells(i, 3).Value = ActiveWorkbook.Sheets("Sheet7").Cells(13, 31).Value

一个去,因为这对我工作正常。

这个问题似乎是, end if没有相应的Ifend if没有相应的If就开始了,并且为表5中的范围指定了一个值,那么你不需要设置状态,你可以直接赋值,就像这样:

 Sub xx() For i = 5 To 45 Step 8 ActiveWorkbook.Sheets("Sheet5").Cells(i, 3).Value = ActiveWorkbook.Sheets("Sheet7").Cells(13, 31).Value Next i End Sub 

工作表具有.Name属性和CodeName属性 。 一般来说,当工作表第一次创build时,两者在视觉上是相同的,但是引用不同。 工作表的.Name可以改变; .CodeName不能被改变。

如果将Sheet5重命名为Binomial Sheet,Sheet7未重命名,则这是引用它们的区别。

 dim i as long with activeworkbook for i = 5 To 45 step 8 'using the worksheet .Name with the names as quoted strings .Sheets("Binomial Sheet").Cells(i, 3) = .Sheets("Sheet7").Cells(13, 31).Value 'using the worksheet .CodeName directly Sheet5.Cells(i, 3) = Sheet7.Cells(13, 31).Value next i end with 

SheetName的.CodeName在.Name更改为Binomial Sheet时不会更改。 每个工作表(及其括号中的.Name)的.CodeNames列在VBE的项目资源pipe理器Ctrl + R )中。