題 VBA語法糖


我每天都在工作中使用VBA,但我不知道Range語法糖。上個月我看到MSDN Range頁面時才知道。我試圖找到一篇有這個功能的文章,但我沒有找到。

有人知道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



謝謝。對於字符串連接,我使用像C#樣式一樣的StringFormat()。 github.com/makah/ExcelHelper/blob/master/Helper.bas  - 葡萄牙語的子評論:-( - Makah
Sheets()的東西? - Makah
如果您引用該對象,則@Makah工作表可以被稱為默認工作表(工作表#)而不是標題。看我的編輯。 - 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



我不知道這個,它真棒+1 - Raystafarian
Uuuh,這很好! - nixda