首页 文章

选择最后一行,范围,vba

提问于
浏览
0

我对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)也指特定的单元格,在我的案例中,Row 70左边是几列,但正如你可能知道的那样,由于行引用每个月都有变化,所以也有同样的问题 . 我需要让我的vba让公式获取这些列的最后一行,列是P,Q,R .

感谢您的任何帮助,您可以提供 .

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

大家好,

我目前有一个变量的输入框,每个月都会变化:

r_mo = Application.InputBox(prompt:=“将报告月份输入为YYYYMM(例如:201604) . 此条目中的错误将导致结果出错 . ”)

这会提示输入框,必须手动输入...但是,我想自动执行此过程并消除对输入框的需要 . 在vba中是不是现在会自动生成今天的日期 .

从现在或系统功能,我想要做的是提取四位数的年份和两位数的月份 .

例如,如果我们在2016年的decemeber

Sub asasdas()

“现在功能”r_mo = YYYYMM'自动从“现在功能”更新

结束子

我感谢你能给我的任何帮助,非常感谢你们 .

3 回答

  • 0

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

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

    当然,如果你再添加2到 lastRow ,你就有了你正在寻找的单元格 .

  • 0

    我会这样做的

    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
    
  • 1

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

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

相关问题