Excel 为什么我的粘贴比它应该的要向下2-1行?

Excel 为什么我的粘贴比它应该的要向下2-1行?,excel,vba,Excel,Vba,我得到了一个项目,我需要在复制和粘贴基于以下内容的信息之前运行一些逻辑。这个逻辑很好,但我遇到的问题是,无论我做什么,我都无法使粘贴发生在正确的位置。它们在当前设置中为2x-1。我一直认为这与cell.row有关,但我所有的尝试、错误和测试都没有结果。如果有人有任何想法,我将不胜感激。将所有cell.Row更改为((cell.Row+1)/2)也不起作用 i、 e。 位于第12行,案例为0。它不会粘贴到第12行,而是粘贴到第23行。对于每个后续行,它将向下粘贴2行,而不是1行,使下一行为25行,

我得到了一个项目,我需要在复制和粘贴基于以下内容的信息之前运行一些逻辑。这个逻辑很好,但我遇到的问题是,无论我做什么,我都无法使粘贴发生在正确的位置。它们在当前设置中为2x-1。我一直认为这与cell.row有关,但我所有的尝试、错误和测试都没有结果。如果有人有任何想法,我将不胜感激。将所有cell.Row更改为((cell.Row+1)/2)也不起作用

i、 e。 位于第12行,案例为0。它不会粘贴到第12行,而是粘贴到第23行。对于每个后续行,它将向下粘贴2行,而不是1行,使下一行为25行,依此类推

Sub CopyClass()
'
' Macro2 Macro
'
    Dim rng As Range, cell As Range
    Set rng = Range("B12:B250")
'

    For Each cell In rng

    Select Case cell
    Case Is = 0
        cell(7, 2).Select
        Selection.Copy
        cell(cell.Row, 2).Select
        ActiveSheet.Paste
        Range("G7:R7").Select
        Selection.Copy
        Range(cell(cell.Row, 6), cell(cell.Row, 17)).Select
        ActiveSheet.Paste
    Case Is = 1
        cell(8, 2).Select
        Selection.Copy
        cell(cell.Row, 2).Select
        ActiveSheet.Paste
        Range("G8:R8").Select
        Selection.Copy
        Range(cell(cell.Row, 6), cell(cell.Row, 17)).Select
        ActiveSheet.Paste
    Case Is = 2
        If InStr(cell(cell.Row, 5), "IRA") > 0 Then
            cell(10, 18).Select
            Selection.Copy
            cell(cell.Row, 2).Select
            ActiveSheet.Paste
            cell(9, 18).Select
            Selection.Copy
            cell(cell.Row, 6).Select
            ActiveSheet.Paste
            Range("H9:R9").Select
            Selection.Copy
            Range(cell(cell.Row, 7), cell(cell.Row, 17)).Select
            ActiveSheet.Paste
        Else
            cell(10, 19).Select
            Selection.Copy
            cell(cell.Row, 2).Select
            ActiveSheet.Paste
            cell(9, 19).Select
            Selection.Copy
            cell(cell.Row, 6).Select
            ActiveSheet.Paste
            Range("H9:R9").Select
            Selection.Copy
            Range(cell(cell.Row, 7), cell(cell.Row, 17)).Select
            ActiveSheet.Paste
        End If
    Case Else
        cell(10, 2).Select
        Selection.Copy
        cell(cell.Row, 2).Select
        ActiveSheet.Paste
        Range("G10:R10").Select
        Selection.Copy
        Range(cell(cell.Row, 6), cell(cell.Row, 17)).Select
        ActiveSheet.Paste
    End Select

    Next cell

End Sub

强烈建议你读一读。还建议避免使用
ActiveSheet.Paste
。您需要
Range(cells(cell.Row,6)、cells(cell.Row,17))
而不是
Range(cell(cell.Row,6)、cell(cell.Row,17))
谢谢!你知道为什么单元格离得这么远,而单元格却工作得很好吗?如果你使用
单元格
而不是
单元格
,你是在从每个单元格偏移,而不是在工作表上使用绝对位置。因此,如果
cell.row
是4,那么
cell(cell.row,1)
实际上比它低3行(因为
cell(1,1)
是单元格本身)不知道这一点。谢谢你的信息。