4

Я использую VBA в своей работе каждый день, но я не знал о синтаксическом сахаре Range. Я только знал в прошлом месяце, когда я увидел страницу MSDN Range. Я пытался найти статью с этими функциями, но я не нашел ни одной.

Кто-нибудь знает, если VBA имеет больше синтаксического сахара, чем этот

Диапазон:Range("A4:C100") до [A4:C100]

или же

Диапазон: Range("MY_DATE") до [MY_DATE]

2 ответа2

6

Другой синтаксический ярлык предназначен для доступа и оценки функций листа. Вы можете использовать скобки для оценки формулы, как если бы она была на рабочем листе, вместо того, чтобы связывать громоздкий оператор VBA.

Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
6

Для диапазонов

Все они делают одно и то же:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .