Вопрос Синтаксический сахар VBA


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

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

Ассортимент:Range("A4:C100") в [A4:C100]

или

Ассортимент: Range("MY_DATE") в [MY_DATE]


4
2018-01-28 11:56


происхождения


Вы могли бы найти, что это стоит прочитать: stackoverflow.com/questions/1070863/hidden-features-of-vba - Pillgram


ответы:


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

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

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

6
2018-01-28 13:55



Благодарю. Для конкатенации строк я использую свой StringFormat (), который работает как стиль C #. github.com/makah/ExcelHelper/blob/master/Helper.bas - Sub комментарии на португальском языке :-( - Makah
Что-то для листов ()? - Makah
Листы @Makah можно назвать листом, который они по умолчанию (Sheet #), а не названием, если вы ссылаетесь на объект. См. Мое редактирование. - Raystafarian
Вы также можете назначить диапазон переменной массива и наоборот. - andy holaday


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

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

6
2018-01-28 21:41



Я этого не знал, и это AWESOME +1 - Raystafarian
Ууух, это хорошо! - nixda