选择活动单元格行内的范围

克里斯·L

我已经看到了其他几个与我类似的问题,并且我尝试了几种不同的解决方案,但我仍然得到奇怪的结果。我的代码在 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章