-1
有沒有一種快速確定方法,如果.usedrange
確實返回什麼?Excel vba如何確定.usedrange是否爲空
簡單例子:
Dim wsKtE as worksheet
Dim KtE() As Variant
set wsKtE = ActiveSheet
KtE = wsKtE.UsedRange
如果在wsKtE沒有數據,我得到一個類型不匹配的異常。我發現,如果wsKtE.usedrange.columns.count
和wsKtE.usedrange.rows.count
都是1,我可以認爲該區域可能是空的。
有沒有更好的方法?
THX卡茲
你應該怎麼做取決於你爲什麼要'UsedRange',而不是別的東西。 'UsedRange'可以是單個單元格或一系列單元格,並且根據單元格*使用情況*填充它,而不取決於它們是否包含值(例如,如果您在空白表單上着色某些單元格,則它們將進入「UsedRange」即使表單上沒有數據)。 – GSerg
例如測試'IsEmpty(wsKtE.UsedRange.Value)'可能就足夠了(因爲你的代碼試圖將'UsedRange.Value'賦值給一個數組,當'.Value'爲'Empty'時會失敗),但是仍然會有一個單元格爲'UsedRange'的情況,其中'Value'不會與數組兼容,您可以使用IsArray()檢測該數組並手動構建數組。但是在我看來,你只是想在'KtE()'後面刪除'()',這樣任何'Value'必須提供的成功都可以成功分配給它,然後有可能''KtE'測試'IsEmpty'和'IsArray'。 – GSerg
我知道,如果使用該區域,則會填充值。我不知道有多少或哪裏。如果我使用'IsEmpty(wsKtE.UsedRange.Value)',它給了我一個空白表單的'FALSE'。啊,但刪除括號後IsEmpty(KtE)'確實給了我'真實'。 – Kazschuri