从特定工作表设置范围对象
你如何将Range Object的值设置为特定表格的特定范围?
我现在有代码导航并激活了正确的表格和单元格,但是当我设置范围的值并复制时,它最终会从表单1复制一个范围,当我希望从另一个表单中取值时。
这里是我现在试图设置范围的代码。
Dim NewValuesRange As Range Dim ActiveCellRowNumber As Integer Sheets(err).Activate Set NewValuesRange = Range(Cells(ActiveCellRowNumber - 1, 1), Cells(ActiveCellRowNumber - 1, 18)) NewValuesRange.Copy NewValuesRange.Insert Shift:=xlDown
我试过把第四行设置为:
Set NewValuesRange = Sheets(err).Range(Cells(ActiveCellRowNumber - 1, 1), Cells(ActiveCellRowNumber - 1, 18))
和
Set NewValuesRange = Worksheet(sheetname).Range(Cells(ActiveCellRowNumber - 1, 1), Cells(ActiveCellRowNumber - 1, 18))
但是,这两个给我一个1004错误。 任何想法如何解决这个问题?
谢谢!
编辑:err是一个已经设置的整数,activecellrownumber是一个已经设置的整数,sheetname是已设置的string。
您需要使用Worksheet对象来限定Range和Cells调用:
Dim NewValuesRange As Range Dim ActiveCellRowNumber As Integer With Sheets(err) Set NewValuesRange = .Range(.Cells(ActiveCellRowNumber - 1, 1), .Cells(ActiveCellRowNumber - 1, 18)) End With NewValuesRange.Copy NewValuesRange.Insert Shift:=xlDown
请注意使用.Range
和.Cells
而不是Range
和Cells
。 我假设你的代码是在一个工作表代码模块中,在这种情况下,任何对“ Range
或“ Cells
引用都不会明确地指向包含代码的工作表,而不是活动工作表。 (即在这种情况下默认为Me.Range
而不是Application.Range
)
您必须在ActiveCellRowNumber中放置一些值
Sub fhskadjfhs() Dim NewValuesRange As Range Dim ActiveCellRowNumber As Integer Dim Errr As String Errr = "Sheet2" Sheets(Errr).Activate ActiveCellRowNumber = ActiveCell.Row Set NewValuesRange = Range(Cells(ActiveCellRowNumber - 1, 1), Cells(ActiveCellRowNumber - 1, 18)) NewValuesRange.Copy NewValuesRange.Insert Shift:=xlDown End Sub
尝试这样的事情:
Sub CopyAndInsert() Dim NewValuesRange As Range Dim ActiveCellRowNumber As Integer With Worksheets(err) Set NewValuesRange = .Range(Cells(ActiveCellRowNumber - 1, 1), Cells(ActiveCellRowNumber - 1, 18)) NewValuesRange.Copy NewValuesRange.Insert Shift:=xlDown End With End Sub