我已经看到了其他几个与我类似的问题,并且我尝试了几种不同的解决方案,但我仍然得到奇怪的结果。我的代码在 AA 列的另一个工作簿中找到一个值,然后我想将该行从 C 列复制到 BC 列并粘贴到当前工作簿中。除了从 C 列复制到 BC 之外,所有代码都有效。出于某种原因,它开始从 AC 列复制行。我尝试了一个标准范围,但我认为它与活动单元格相对,我不知道是否有办法处理负列字母,所以我尝试了 Offset 并尝试了 .Cells 但没有选择正确的范围。这是我尝试过的代码的几个示例:
Private Sub ComboBox1_Change()
Dim checknum As String
Dim chkrow As String
Dim Rng As Range
prfile1 = Worksheets("setup").Range("B10").Value
prfile2 = Worksheets("setup").Range("B7").Value
filepath = Worksheets("setup").Range("e10").Value
checknum = ComboBox1.Value
'Workbooks.Open filepath & prfile2
Windows(prfile2).Activate
Worksheets("MRegister").Select
With Worksheets("MRegister").Range("AA:AA")
Set Rng = .Find(What:=checknum, _
After:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
Rng.Select
.Range(.Cells(ActiveCell.Row, -24), .Cells(ActiveCell.Row, 28)).Select
Selection.Copy
End With
Windows(prfile1).Activate
Sheets("ReprintOld").Range("M203:BM203").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Windows(prfile2).Activate
Sheets("MRegister").Range("A1").Select
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Sheets("ReprintOld").Range("A1").Select
End Sub
对于偏移:
.Range(ActiveCell.Offset(0, -24), ActiveCell.Offset(0, 28)).Select
对于标准范围:
.Range("C" & ActiveCell.Row & ":BC" & ActiveCell.Row).Select
您会认为所有这些都可以工作,但它们都开始选择活动单元格右侧的几列。
问题是,正如 user3561813 所提到的,您在With
语句的末尾有一个 Range 对象。也许最简单的解决方案是使用:
Intersect(Rng.Entirerow, .Worksheet.Range("C:BC")).Copy
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句