我怕我誤解了VBA的Excel文件的文檔,我有這條線,這似乎是一個錯誤:當你應該使用Set [例如SpecialCells返回值]?
Range a = Selection.SpecialCells(xlCellTypeConstants, 23)
但是這一次僅僅是罰款:
Set a = Selection.SpecialCells(xlCellTypeConstants, 23)
的文件要求:
Returns a Range object that represents all the cells that match the specified type and value.
但它實際上返回一個對象byRef
,這就是爲什麼我要使用Set
。
我在這裏錯過了什麼?
這裏是Excel Range.SpecialCells
方法幫助:
我看到一些API函數使用BYVAL - 因此,有一個BYVAL PARAMS通過 '私人小組Workbook_SheetChange(BYVAL SH作爲對象,BYVAL目標作爲範圍) 結束Sub' – 0x90
@的0x90傳遞對象'BYVAL '在VBA中意味着傳遞引用byval,而不是像在C++中那樣複製對象並傳遞副本byval。傳遞對象BYVAL確保被調用的函數將無法與完全另一個目的是取代傳遞的對象,但它仍然能夠與它擺弄。 – GSerg
好了,所以我測試:默認是按地址PARAM傳球,除非有明確的按地址/ BYVAL聲明。 – 0x90