Excel 更改为在板材之间移动时,在Marco下方移动不工作
我正在尝试更改我的Excel 更改为在板材之间移动时,在Marco下方移动不工作,excel,vba,Excel,Vba,我正在尝试更改我的移动到宏,以移动不同工作表上列下的列 当我在同一张纸上的其他列下移动列时,它工作得很好 我无法获得wsS.Range(单元格(2,j),单元格(lRow,j))的正确语法。复制_ 目的地:=wsT.范围(单元格(LR,k),单元格(LR,k)).偏移量(1,0) 当我运行宏时,不会发生任何事情,不会抛出任何错误,也不会移动任何内容 谢谢 Sub MoveUnder() Dim wsS As Excel.Worksheet Dim wsT As Worksheet Dim ar
移动到宏,以移动不同工作表上列下的列
当我在同一张纸上的其他列下移动列时,它工作得很好
我无法获得wsS.Range(单元格(2,j),单元格(lRow,j))的正确语法。复制_
目的地:=wsT.范围(单元格(LR,k),单元格(LR,k)).偏移量(1,0)
当我运行宏时,不会发生任何事情,不会抛出任何错误,也不会移动任何内容
谢谢
Sub MoveUnder()
Dim wsS As Excel.Worksheet
Dim wsT As Worksheet
Dim ar As Variant
Dim er As Variant
Dim i As Variant
Dim h As Variant
Dim j As Long
Dim k As Long
Dim lRow As Long
Dim LR As Long
Set wsS = ActiveWorkbook.Sheets(1)
Set wsT = ActiveWorkbook.Sheets(2)
ar = Array("user id", "user name") ' Find column to copy
er = Array("user id", "user name") ' Find column to paste beneith
lRow = wsS.Range("A" & Rows.count).End(xlUp).Row
LR = wsT.Range("A" & Rows.count).End(xlUp).Row
On Error Resume Next
For i = LBound(ar) To UBound(ar)
j = wsS.Rows(1).Find(ar(i), Rows(1).Cells(Rows(1).Cells.count), , xlWhole, xlByRows).Column
k = wsT.Rows(1).Find(er(i), Rows(1).Cells(Rows(1).Cells.count), , xlWhole, xlByRows).Column
wsS.Range(Cells(2, j), Cells(lRow, j)).Copy _
Destination:=wsT.Range(Cells(LR, k), Cells(LR, k)).Offset(1, 0)
Next i
On Error GoTo 0
End Sub
我稍微修改了您的代码,使其更可靠:
Sub MoveUnder()
Dim wsS As Worksheet, wsT As Worksheet
Dim ar, er, i, h, j, k
Dim lRow As Long, LR As Long
Dim rng1 As Range, rng2 As Range
Set wsS = ActiveWorkbook.Sheets(1)
Set wsT = ActiveWorkbook.Sheets(2)
ar = Array("user id", "user name") ' Find column to copy
er = Array("user id", "user name") ' Find column to paste beneith
lRow = wsS.Range("A" & wsS.Rows.Count).End(xlUp).Row
LR = wsT.Range("A" & wsT.Rows.Count).End(xlUp).Row
For i = LBound(ar) To UBound(ar)
Set rng1 = wsS.Range("1:1").Find(ar(i), wsS.Cells(1, wsS.Columns.Count), , xlWhole, xlByRows)
Set rng2 = wsT.Range("1:1").Find(er(i), wsT.Cells(1, wsT.Columns.Count), , xlWhole, xlByRows)
If Not rng1 Is Nothing And Not rng2 Is Nothing Then
j = rng1.Column
k = rng2.Column
wsS.Range(wsS.Cells(2, j), wsS.Cells(lRow, j)).Copy _
Destination:=wsT.Cells(LR + 1, k)
End If
Next i
End Sub
您应该完全限定单元格
对象,如下所示:wsT.Cells(LR,k)
等等
另请检查此链接以获取解释注释下一步错误恢复时的,查看抛出的错误。你好,波特兰跑步者,我得到对象工作表的方法范围失败
和wsS.Range(单元格(2,j),单元格(lRow,j))。复制目标:=wsT.Range(单元格(LR,k),单元格(LR,k))。偏移量(1,0)
被突出显示,我认为这是问题所在,但我不知道哪里出了问题,谢谢,这非常有效。simoco我注意到您有Dim ar,er,I,h,j,k
这些不需要像Dim ar As Variant
这样的特定Dim?默认情况下,所有变量都有类型Variant
,直到您指定任何其他变量,所以您可以始终在声明中将其作为Variant
部分