如果你愿意,我试图通过创建“快捷方式”来减少代码的混乱程度
例如,我总是要输入
ThisWorkBook.ActiveSheet.Range
我有没有办法定义上面的内容来创建一个不那么罗嗦的宏?我已经尝试转换为范围和字符串,前者返回错误(但我仍然可以让intellisense识别并尝试自动填充),而字符串版本不起作用。
答案 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