我想将一个工作表上的每个第八个单元格设置为另一个工作表中的单元格的值。我在这里写了这个:
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 ,我是否必须以不同的方式引用它? 还有其他方法可以实现这个目标吗?
答案 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 property和CodeName 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 )。