问题:我的工作簿中有Sheet2和Sheet3的数据。它们在A列和B列中列出了相同的属性位置,但它们旁边的列中的数据不同,因此我定义了不同的范围。根据我尝试填充的报告选项卡,我需要代码来引用Sheet2.Range(命名范围)或Sheet3.Range(命名范围),但我收到错误。它始终从Sheet1中选择数据或给我错误。在定义命名范围时,我尝试使用With End With作为占用选项卡部分,以指示范围应该使用Sheet2但不起作用。当我转到"占用选项卡复制并粘贴"我还尝试激活Sheet2。以下部分,但这也没有奏效。救命啊!
我的代码目前:
`Dim Pltf As Range
Set Pltf = Sheet1.Range("C3")
Dim message As String
'Define individual regions within platforms
Dim OntarioWest1, OntarioWest2, OntarioWest3, OntarioWest4, OntarioWest9, OntarioWestTransReg As Range
Dim OntarioEast5, OntarioEast6, OntarioEast7, OntarioEast8, OntarioEastTransReg As Range
Dim West1, West2, West3, West4, WestTransReg As Range
Dim Quebec1, Quebec2, Quebec3, Quebec4, QuebecTransReg As Range
'Define the area to select for Ontario West regions
Set OntarioWest1 = Range(("A18:B18"), Range("A18:B18").End(xlDown))
Set OntarioWest2 = Range(OntarioWest1.End(xlDown).End(xlDown).Resize(1, 2), OntarioWest1.End(xlDown).End(xlDown).End(xlDown))
Set OntarioWest3 = Range(OntarioWest2.End(xlDown).End(xlDown).Resize(1, 2), OntarioWest2.End(xlDown).End(xlDown).End(xlDown))
Set OntarioWest4 = Range(OntarioWest3.End(xlDown).End(xlDown).Resize(1, 2), OntarioWest3.End(xlDown).End(xlDown).End(xlDown))
Set OntarioWest9 = Range(OntarioWest4.End(xlDown).End(xlDown).Resize(1, 2), OntarioWest4.End(xlDown).End(xlDown).End(xlDown))
Set OntarioWestTransReg = Range(OntarioWest9.End(xlDown).End(xlDown).Resize(1, 2), OntarioWest9.End(xlDown).End(xlDown).End(xlDown))
'Define the area to select for Ontario East regions
Set OntarioEast5 = Range(OntarioWestTransReg.End(xlDown).End(xlDown).Resize(1, 2), OntarioWestTransReg.End(xlDown).End(xlDown).End(xlDown))
Set OntarioEast6 = Range(OntarioEast5.End(xlDown).End(xlDown).Resize(1, 2), OntarioEast5.End(xlDown).End(xlDown).End(xlDown))
Set OntarioEast7 = Range(OntarioEast6.End(xlDown).End(xlDown).Resize(1, 2), OntarioEast6.End(xlDown).End(xlDown).End(xlDown))
Set OntarioEast8 = Range(OntarioEast7.End(xlDown).End(xlDown).Resize(1, 2), OntarioEast7.End(xlDown).End(xlDown).End(xlDown))
Set OntarioEastTransReg = Range(OntarioEast8.End(xlDown).End(xlDown).Resize(1, 2), OntarioEast8.End(xlDown).End(xlDown).End(xlDown))
'Define the area to select for West
Set West1 = Range(OntarioEastTransReg.End(xlDown).End(xlDown).End(xlDown).End(xlDown).Resize(1, 2), OntarioEastTransReg.End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown))
Set West2 = Range(West1.End(xlDown).End(xlDown).Resize(1, 2), West1.End(xlDown).End(xlDown).End(xlDown))
Set West3 = Range(West2.End(xlDown).End(xlDown).Resize(1, 2), West2.End(xlDown).End(xlDown).End(xlDown))
Set West4 = Range(West3.End(xlDown).End(xlDown).Resize(1, 2), West3.End(xlDown).End(xlDown).End(xlDown))
Set WestTransReg = Range(West4.End(xlDown).End(xlDown).Resize(1, 2), West4.End(xlDown).End(xlDown).End(xlDown))
'Define the area to select for Quebec
Set Quebec1 = Range(WestTransReg.End(xlDown).End(xlDown).End(xlDown).End(xlDown).Resize(1, 2), WestTransReg.End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown))
Set Quebec2 = Range(Quebec1.End(xlDown).End(xlDown).Resize(1, 2), Quebec1.End(xlDown).End(xlDown).End(xlDown))
Set Quebec3 = Range(Quebec2.End(xlDown).End(xlDown).Resize(1, 2), Quebec2.End(xlDown).End(xlDown).End(xlDown))
Set Quebec4 = Range(Quebec3.End(xlDown).End(xlDown).Resize(1, 2), Quebec3.End(xlDown).End(xlDown).End(xlDown))
Set QuebecTransReg = Range(Quebec4.End(xlDown).End(xlDown).Resize(1, 2), Quebec4.End(xlDown).End(xlDown).End(xlDown))
'Define platform by using individual regional ranges
Dim OnW, OnE, Wst, Qc As Range
Set OnW = Range(OntarioWest1, OntarioWestTransReg)
Set OnE = Range(OntarioEast5, OntarioEastTransReg)
Set Wst = Range(West1, WestTransReg)
Set Qc = Range(Quebec1, QuebecTransReg)
**'Occupancy Tab:** Uses platform ranges and regional ranges to define cells to copy. **This needs to refer to Sheet2!!**
Dim OntarioWestOcc, OntarioEastOcc, WestOcc, QuebecOcc As Range
Set OntarioWestOcc = Union(OnW, Range(OntarioWest1, OntarioWestTransReg).Offset(0, 2).Resize(, 15))
Set OntarioEastOcc = Union(OnE, Range(OntarioEast5, OntarioEastTransReg).Offset(0, 2).Resize(, 15))
Set WestOcc = Union(Wst, Range(West1, WestTransReg).Offset(0, 2).Resize(, 15))
Set QuebecOcc = Union(Qc, Range(Quebec1, QuebecTransReg).Offset(0, 2).Resize(, 15))
' Copy and paste data from relevant areas to its respective report tab
**'Occupancy tab copy & paste**
Sheet2.Activate
If Pltf = "Ontario West" Then
OntarioWestOcc.Copy
ElseIf Pltf = "Ontario East" Then
OntarioEastOcc.Copy
ElseIf Pltf = "West" Then
WestOcc.Copy
ElseIf Pltf = "Quebec" Then
QuebecOcc.Copy
Else
message = "No Platform Selected"
End If
With Sheet4.Range("A6")
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValuesAndNumberFormats
End With
Sheet4.Activate
Sheet4.Cells(1, 1).Select
答案 0 :(得分:0)
您可以使用.address
对象的Range
属性来使用其地址并将其应用于其他工作表。
例如:
Dim r1 As Range, r2 As Range, r3 As Range
Set r1 = Sheet1.Range("A1")
Set r2 = Sheet1.Range("C3")
Set r3 = Sheet2.Range(r1.Address) ' <-- will get you A1 of sheet2
Set r3 = Sheet2.Range(r1.Address, r2.Address) ' <-- will get you A1:C3 of sheet2