VBA定义变量中的属性

时间:2014-12-22 14:58:22

标签: excel vba excel-vba properties

我是论坛的新手,也是VBA的新手(一周前才开始学习)。

是否可以在变量中定义属性?我有一行看起来像这样:

Cells(i, j).Formula = "=" & .Cells(i, j).Address(External:=True, RowAbsolute:=False, ColumnAbsolute:=False)

我必须写几个单元格,所以我最终得到了很多这些单元格;如果可能的话,我想做类似的事情:

dim prop as string

prop = "Address(External:=True, RowAbsolute:=False, ColumnAbsolute:=False)"

Cells(i, j).Formula = "=" & .Cells(i, j).prop

可以这样做吗?

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

Function MyProp(ByVal r as Range) as String
    MyProp = r.Address(External:=True, RowAbsolute:=False, ColumnAbsolute:=False)
End Function


...
Cells(i,j).Formula = "="& MyProp( Cells(i,j) )

这当然是一个单元格引用本身,这通常是一个坏主意,可能会导致循环引用。如果你更多地描述你想要做的事情以获得更好的答案,那就最好。

答案 1 :(得分:0)

正如评论中所提到的,这不能以你描述的方式完成。有两种选择:

  1. 编写一个您输入和预期输出(更复杂)的私函数
  2. 编写一个循环,代码只出现一次。 (少代码)
  3. 为所有单元格写一个循环,从A1到最后使用的行,最后一次使用的列:

    Dim LastRow As Long, LastCol As Long
    
    LastRow = Range("A" & Rows.Count).End(xlUp).Row
    LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
    
    For i = 1 To LastRow
        For j = 1 to LastCol
            `Do your stuff here
        Next j
    Next i
    

    编辑: 我假设您需要投资Range.Offset()方法found here,因为现在,您正在设置单元格的公式等于它自己...