让VBA脚本查找下一个空行?

时间:2014-05-24 16:56:03

标签: excel vba excel-vba excel-2013

我正在尝试记录我所拥有的表单处理的所有信息。每周都会更新表单,我想保留其中包含的数据的日志。下面我将从表单传输的数据编写到数据日志,但是它被设置为特定的行。

Sub DataLog()
'
' DataLog Macro
' Record sales in the data log.
'

'
    Sheets("Cell History").Select
    Range("A7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[-6]C[3]"
    Range("C7").Select
    ActiveCell.FormulaR1C1 = "=Form!RC[2]"
    Range("D7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[1]C[1]"
    Range("E7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[2]C"
    Range("F7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[3]C[-1]"
    Range("G7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[4]C[-2]"
    Range("H7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[5]C[-3]"
    Range("I7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[6]C[-4]"
    Range("J7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[7]C[-5]"
    Range("K7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[8]C[-6]"
    Range("L7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[9]C[-7]"
    Range("N7").Select
    ActiveCell.FormulaR1C1 = "=Form!RC[-3]"
    Range("O7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[1]C[-4]"
    Range("P7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[2]C[-5]"
    Range("Q7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[3]C[-6]"
    Range("R7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[4]C[-7]"
    Range("S7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[5]C[-8]"
    Range("T7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[6]C[-9]"
    Range("U7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[7]C[-10]"
    Range("V7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[8]C[-11]"
    Range("X7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]"
    Range("Y7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]"
    Range("Z7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]"
    Range("AA7").Select
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]"
End Sub

因为我将每周更新一次,所以我想知道如何让Excel从第7行开始查找下一个空行。我目前正在使用Excel 2013.非常感谢所有帮助,谢谢:)

更新:

我使用Andy G的代码将其更改为:

Dim rng As Range
Set rng = Range("A100000").End(xlUp).Offset(1,0)

rng.Value = "orginal cell location"

我删除了第二个“.Offset(0,1)”,因为它将单元格第二次向右移动。

谢谢大家:)

1 个答案:

答案 0 :(得分:3)

你可以从列中开始,然后找到最后一个带有值的单元格,然后再向下进一步找到下一个空单元格:

Range("A100000").End(xlUp).Offset(1,0).Select

100000是一个任意数字,如果您愿意,可以使用Cells.Rows.Count

但是,您应该存储对它的引用,而不是选择单元格,并使用Offset将所有值插入同一行:

Dim rng As Range
Set rng = Range("A100000").End(xlUp).Offset(1,0)

rng.Offset(0,1).Value = "whatever"

选择细胞是非常低效的。