我对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'自动从“现在的功能”
更新End Sub
感谢您给予我的任何帮助,非常感谢您。
答案 0 :(得分:1)
您可以使用以下代码在VBA中获取给定列的最后一行(在我的示例中为W):
Dim ws As Worksheet : Set ws = ThisWorkbook.Worksheets("MySheetNameHere")
lastRow = ws.Cells(ws.Rows.Count, "W").End(xlUp).Row
当然,如果你再添加2到lastRow
,你就拥有了你正在寻找的单元格。
答案 1 :(得分: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
答案 2 :(得分:0)
如果你想要一个更详细的答案,你将不得不提出一个新的问题但是对于你的第二个问题,试试这个。
Sub Now()
Dim myDate As String
myDate = Date
myDate = Format(myDate, "yyyymm")
Debug.Print myDate '201606 output for June 10th 2016
End Sub