选择最后一行,范围,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
我是 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