VBA 语法糖

Mak*_*kah 4 vba microsoft-excel

我每天在工作中使用 VBA,但我不知道 Range 语法糖。我上个月看到 MSDN Range 页面时才知道。我试图找到具有此功能的文章,但没有找到。

有人知道VBA是否有比这更多的语法糖吗

范围:Range("A4:C100")[A4:C100]

或者

范围:Range("MY_DATE")[MY_DATE]

Ray*_*ian 6

对于范围

这些都做同样的事情:

Range(Cells(1, 2), Cells(2, 2)).Select

Range("B1:B2").Select

Dim rngB As Range
Set rngB = Range("B1:B2")
rngB.Select
Run Code Online (Sandbox Code Playgroud)

[B1:B2].Select


对于字符串

你没有很多选择

Dim strA As String
strA = "hello"
Run Code Online (Sandbox Code Playgroud)

strA = strA + "world"strA = strA & "world"做同样的事情(与号是首选)

strA &= "world"并且strA += "world" 不工作。


对于工作表

您通常可以使用带有编号的实际默认工作表,而不是工作表的名称:

Worksheets("Name").Activate
Sheets("Name").Activate
'Worksheet "Name" is Sheet1 object
Sheet1.Activate
Run Code Online (Sandbox Code Playgroud)

对于工作表公式/函数

来自 Excelll 的完整回答

另一个语法快捷方式用于访问和评估工作表函数。您可以使用方括号来评估公式,就像它在工作表上一样,而不是将繁琐的 VBA 语句串在一起。

Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
Run Code Online (Sandbox Code Playgroud)


Exc*_*lll 6

另一个语法快捷方式用于访问和评估工作表函数。您可以使用方括号来评估公式,就像它在工作表上一样,而不是将繁琐的 VBA 语句串在一起。

Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
Run Code Online (Sandbox Code Playgroud)