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

时间:2015-06-04 08:26:50

标签: excel vba 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 ,我是否必须以不同的方式引用它? 还有其他方法可以实现这个目标吗?

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

因此,我要:CREATE PROCEDURE [dbo].[sz_pipeline001_collation] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' + SYSTYPES.name + CASE systypes.NAME WHEN 'text' THEN ' ' ELSE '(' + RTRIM(CASE SYSCOLUMNS.length WHEN -1 THEN 'MAX' ELSE CONVERT(CHAR,SYSCOLUMNS.length) END) + ') ' END + ' ' + ' COLLATE Latin1_General_CI_AS ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID AND SYSOBJECTS.TYPE = 'U' AND SYSTYPES.Xtype = SYSCOLUMNS.xtype AND SYSCOLUMNS.COLLATION IS NOT NULL AND NOT ( sysobjects.NAME LIKE 'sys%' ) AND NOT ( SYSTYPES.name LIKE 'sys%' ) END

一个去,因为这对我来说很好。

答案 2 :(得分:1)

问题似乎是你有end if而没有相应的If开始,并且要为表5中的范围指定一个值,你不需要陈述{{ 1}}你可以像这样直接分配值:

set

答案 3 :(得分:1)

工作表有.Name propertyCodeName property。一般来说,首次创建工作表时,两者在视觉上是相同的,但引用方式不同。工作表的.Name可以更改;无法更改.CodeName。

如果 Sheet5 重命名二项式表 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

当.Name更改为二项式表时,Sheet5的.CodeName没有更改。每个工作表的.CodeNames(及括号中的.Name)列在VBE的 Project Explorer 中( Ctrl + R )。