Я использую VBA в своей работе каждый день, но я не знал о синтаксическом саже Range. Я только знал в прошлом месяце, когда увидел страницу диапазона MSDN. Я попытался найти статью с этими функциями, но я ее не нашел.
Кто-нибудь знает, имеет ли VBA больше синтаксического сахара, чем это
Ассортимент:Range("A4:C100")
в [A4:C100]
или
Ассортимент: Range("MY_DATE")
в [MY_DATE]
Для диапазонов
Все они делают то же самое:
Range(Cells(1, 2), Cells(2, 2)).Select
Range("B1:B2").Select
Dim rngB As Range
Set rngB = Range("B1:B2")
rngB.Select
[B1:B2].Select
Для строк
У вас не так много вариантов
Dim strA As String
strA = "hello"
strA = strA + "world"
а также
strA = strA & "world"
делать то же самое (предпочтительнее амперсанд)
strA &= "world"
а также strA += "world"
не работают.
Для рабочих листов
Обычно вы можете работать с фактическим листом по умолчанию с номером, а не с именем листа:
Worksheets("Name").Activate
Sheets("Name").Activate
'Worksheet "Name" is Sheet1 object
Sheet1.Activate
Для формул / функций рабочего листа
Из ответа Excellll для полноты:
Еще один синтаксический ярлык предназначен для доступа и оценки рабочего листа
функции. Вы можете использовать скобки для оценки формулы, как если бы она была включена
рабочий лист вместо того, чтобы объединять громоздкий VBA
заявление.
Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
Другой синтаксический ярлык предназначен для доступа и оценки функций рабочего листа. Вы можете использовать скобки, чтобы оценить формулу, как если бы она была на листе, а не скручивать громоздкую инструкцию VBA.
Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub