选择最后一行,范围,vba

Selecting last row, range, vba

我是 vba 的新手,遇到一个相当简单的问题。有人可以帮忙吗:

我希望我的 vba 宏转到感兴趣的列的底部,跳过,而不是选择特定的单元格,它下面的两个单元格执行以下操作:

    Range("W72").Select
    Selection.NumberFormat = "General"
    ActiveCell.FormulaR1C1 = "Null_value"
    Range("X72").Select
    Selection.NumberFormat = "General"
    ActiveCell.FormulaR1C1 = "=R[-2]C[1]-SUM(R[-2]C[-8]:R[-2]C[-6])"

如您所见,上面的代码引用了特定的单元格 W72 和 X72。目前,这些列中的最后一个条目在 W70 和 X70 中,但下个月我的数据集会变大,因此 W72 和 X72 不是执行上述操作的正确位置。我该如何纠正这一点,以便我的 vba 代码自动转到 W(n):X(n) 的底部,跳过一行并在 W(n+2)、X(n+2) 中执行上面的代码。

此外,我上面的公式 (ActiveCell.FormulaR1C1) 也引用了特定的单元格,在我的例子中是第 70 行左侧的几列,但正如您可能所说,这也有同样的问题,因为引用的行发生了变化每个月。我需要让我的 vba 让公式选取这些列的最后一行,这些列是 P、Q、R。

感谢您提供的任何帮助。

更新:我同一个工作项目的一部分,如果有人也能提供帮助,我将不胜感激。谢谢:

大家好,

我目前有一个每月更改的变量的输入框:

r_mo = Application.InputBox(提示:="Enter the reporting month as YYYYMM (Eg:201604). Errors in this entry will result in errors in the results.")

这会提示一个输入框,必须手动输入...但是,我想自动执行此过程并消除对输入框的需要。 vba 中不是有一个now 函数会自动生成今天的日期吗?

从现在或系统函数中,我只想提取四位数的年份和两位数的月份。

例如,如果我们在 2016 年 12 月

子asasdas()

"Now function" r_mo = YYYYMM ' 从 "now function"

自动更新

结束子

非常感谢您能给我的任何帮助,非常感谢大家。

您可以使用以下代码获取 VBA 中给定列(在我的示例中为 W)的最后填充行:

Dim ws As Worksheet : Set ws = ThisWorkbook.Worksheets("MySheetNameHere")    
lastRow = ws.Cells(ws.Rows.Count, "W").End(xlUp).Row

当然,如果您随后将 2 添加到 lastRow,您就会找到要查找的单元格。

我会这样做

Sub asdf()

    Range("w1048576").End(xlUp).Offset(2, 0).Select 'gets the last row
    With Selection
        .NumberFormat = "General"
        .FormulaR1C1 = "Null_value"
    End With

    ActiveCell.Offset(, 1).Select

    With Selection
        .NumberFormat = "General"
        .FormulaR1C1 = "=R[-2]C[1]-SUM(R[-2]C[-8]:R[-2]C[-6])"
    End With

End Sub

如果您想要更详细的答案,您将不得不提出一个新问题,但对于您的第二个问题,请尝试这个。

Sub Now()
    Dim myDate As String
    myDate = Date
    myDate = Format(myDate, "yyyymm")
    Debug.Print myDate '201606 output for June 10th 2016
End Sub