在vba excel上定义代码以简化代码编写过程

时间:2018-06-13 08:09:57

标签: excel vba excel-vba

如果你愿意,我试图通过创建“快捷方式”来减少代码的混乱程度

例如,我总是要输入

ThisWorkBook.ActiveSheet.Range

我有没有办法定义上面的内容来创建一个不那么罗嗦的宏?我已经尝试转换为范围和字符串,前者返回错误(但我仍然可以让intellisense识别并尝试自动填充),而字符串版本不起作用。

2 个答案:

答案 0 :(得分:1)

就像在任何编程语言中一样,您可以使用变量来存储数据 例如:

Dim myrange As Range: Set myrange = Sheets("Sheet1").Range("B5")

或者,如果您将多次使用同一个对象,则可以使用With关键字 例如。而不是写作你想要每次在你可以做的每一行上使用表

With Sheets("Sheet1").ListObjects("Table1")
   .ListRows.Add
   .ListColumns(2).Range(3) = "Hello World!"
   ' ... and so on
End With

此外,请注意:避免使用Select/ActiveSheet/ActiveWorkbook等等! 有关如何here

的更多信息

答案 1 :(得分:0)

您可以创建函数或自定义属性,这些属性在调用时始终进行评估

Property Get pARng As Range
    Set pARng = ThisWorkBook.ActiveSheet.Range
End Property

Function fARng As Range
    Set fARng = ThisWorkBook.ActiveSheet.Range
End Function

'Usage
Sub xxx

    '...

    pARng.Rows(1).Activate
    'Same as ThisWorkBook.ActiveSheet.Range.Rows(1).Activate

    fARng.Rows(1).Activate
    'using function instead achieves same result
End Sub