如何在vba上输入由用户决定的变量值?

时间:2019-05-15 08:55:58

标签: excel vba

我必须使用多个Excel工作表进行计算,并且我需要用户输入行数,但该行数每年都会变化,因此我希望此变量是变量,并由使用宏的用户输入。不幸的是,我找不到办法。

Range("B2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B95145"), Type:=xlFillDefault
Range("B2:B95145").Select
Range("J1").Select

例如,当我要执行计算时,我希望B2:B95145是可变的,即启动宏之前必须输入的数字。

1 个答案:

答案 0 :(得分:3)

您可以自动找到A列中最后使用的行,例如使用

LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row  

因此,此代码应在B列中填充与A列中的数据一样多的行

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your sheet name

Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row    

ws.Range("B2").FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
ws.Range("B2").AutoFill Destination:=ws.Range("B2:B" & LastRow), Type:=xlFillDefault

,甚至无需直接在所有单元格中使用自动填充功能即可编写公式:

ws.Range("B2:B" & LastRow).FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"

如果您在C列中有另一个公式,则只需添加

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your sheet name

Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row    

ws.Range("B2:B" & LastRow).FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
ws.Range("C2:C" & LastRow).FormulaR1C1 = 'your formula here