首页 > 解决方案 > 将一列中的所有单元格下移一行(偏移)

问题描述

我想将一列中的所有单元格(在我的情况下是 C 列)中向下移动一行。这意味着如果我在单元格 C1 中写了“X”,它应该下移到单元格 C2,如果我在单元格 C1000 中写了“Y”,它应该下移到单元格 C1001……</p>

我有以下错误消息:

运行时错误 1004,应用程序定义或对象定义错误

Sub movedownrowcolumnC()    
    Range("C:C").Offset(1).Select
End Sub

标签: excelvba

解决方案


利用:

Cells(Rows.Count, "C").End(xlUp).Offset(1).Select

尽管您很可能不需要Select任何东西,只需使用Range变量即可:

Sub movedownrowcolumnC()
    Dim myRange As Range
    Set myRange = Cells(Rows.Count, "C").End(xlUp).Offset(1)

    myRange.Value = "myValue"
End Sub

虽然不仅仅是“良好的编码实践”是始终明确限定一个Range对象的Worksheet引用:

Sub movedownrowcolumnC()
    Dim myRange As Range

    With Worksheets("mySheetName") ' reference wanted worksheet (change "mySheetName" to your actual relevantsheet name)
        Set myRange = .Cells(.Rows.Count, "C").End(xlUp).Offset(1) ' ser referenced worksheet column C cells right below last not empty one
    End With

    myRange.Value = "myValue"
End Sub

推荐阅读