Excel使用单元格值作为VBA中的范围

时间:2015-12-10 14:32:20

标签: excel vba excel-vba

我有一个excel文件。 A列每次都有一个可变的行数,这就是我需要制作动态公式的原因。例如;

我想在B1上写“= LEN(B1)”公式。当双击单元格的右下角时,它将一直结束,直到A列值结束。这就是为什么在所有这个过程之前,我在单元格C1上写了“= COUNT(A:A)”。

在我的VBA中,我想写;

Dim TEMP As String
TEMP = Range("C1").Value
Range("B1").Select
ActiveCell.FormulaR1C1="=+LEN(RC[-1])"
Selection.AutoFill Destination:=Range("B1:TEMP")

但是这个过程有问题。因此,我只想在我的VBA中使用单元格值作为范围或字符串或数字。

感谢您的支持。

1 个答案:

答案 0 :(得分:1)

两个注释:

  1. 最佳做法是事先确定对象(工作簿,工作表,范围等)的资格
  2. 当您使用R1C1表示法时,您可以直接将公式编写到范围内(不需要AutoFillFillDown
  3. 试试这个:

    Dim ws as Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") 'edit for your sheet name
    Dim lRow as Long
    lRow = ws.Range("A" & ws.Rows.count).End(xlup).Row
    ws.Range("B1:B" & lRow).FormulaR1C1 = "=Len(RC[-1])"
    

    正如值得一提的那样,你写Range("B1:TEMP")的方式不是正确的语法。正确的语法是Range("B1:B" & TEMP),当然,只有当TEMP确实是一个数值时才会有效:)