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

Excel VBA将多个单元格设置为相同的值,vba,excel,Vba,Excel,我想将一个工作表中的每八个单元格设置为另一个工作表中某个单元格的值。我在这里写道: 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也被命名为二项式

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

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也被命名为二项式表,我是否需要以不同的方式引用它?
是否有其他方法可以实现这一点?

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

此外,ThisWorkbook指的是宏所在的位置,但不适合以这种方式调用

因此,我会给出:
ActiveWorkbook.Sheets(“Sheet5”).Cells(I,3)。Value=ActiveWorkbook.Sheets(“Sheet7”)。Cells(13,31)。Value


开始,因为这对我来说很好。

问题似乎是您有一个
结束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
工作表有a和a。一般来说,在首次创建工作表时,这两个工作表在视觉上是相同的,但引用方式不同。工作表的.名称可以更改;无法更改.code名称

如果图纸5已重命名为二项式图纸,但图纸7未重命名,则这是引用它们时的区别

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

当Sheet5的.Name更改为二项式工作表时,其.CodeName没有更改。每个工作表的.CodeNames(及其括号中的.Name)列在VBE的项目资源管理器中(Ctrl+R)。

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

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

它们是否真的命名为第5页和第7页,而不是第5页和第7页?请删除
,并确保表名正确。@user3964075-集上的内容很好。我完全忽略了这一点。如果<代码>的结束也是为了什么?如果工作表(不是VBA对象)的名称是<代码>二项式工作表<代码>那么您必须使用<代码>此工作簿。工作表(“二项式工作表”).Cells(…或<代码>工作表5.Cells)(…一两句解释会大大有助于更好地回答这个问题。后续问题:它现在写入值,但在每个单元格中写入的值不同。有时它写入0,有时写入1或2,即使sheet7中的单元格读取0@Prot-使用单元格“AE13”中的值对此进行测试在sheet7中,它用于meNice解释,但.CodeName cannot change不是真的。您可以在属性窗口中更改它。这应该是一个秘密。;@Jeeped,很好的解释。您个人是否使用过
工作表
对象而不是通过
工作表(…)
?我一直认为默认名称在描述方面很糟糕……而你也遇到了容易更改名称和破坏所有对象引用的问题。@Byron-通常,我使用工作表名称,但这是我所做工作的性质。在较小程度上,我会使用代码名,有时(很少)会使用索引号。后一种情况是,我没有对有限工作表队列进行重新排序。这取决于具体情况。出于演示目的,这里的代码名对初学者来说比较混乱,我不想用代码段解释每一个With/End。我使用1E+99已经足够了。