越是趕工的時候就越容易踩坑...莫非定律完全正常發揮!
Range(Cells(1, 2), Cells(StringDictionary.Count, 2)) = Application.Transpose(StringDictionaryItems)
↑兇手
昨天趕著要交東西出去,就在工具都寫好測好,要輸出正式的檔檔案的時候就出包了。
這段的作用是將陣列的內容轉向並貼到 Excel 中,在轉向時出錯了。執行的時候會顯示【型態不符】的錯誤,但是跟型態也沒有關係,所以一開始也怎樣都找不到問題@@
查的過程就不詳述,總之查出來是陣列中有一個資料大於 255 字(中文),它就掛掉了。我有想過是不是因為我偷懶沒有宣告的關係,但並不是,宣告成 Variant 也沒有用,一樣出錯。
網路上找到 Application.Transpose 都是在講陣列的長度,沒看到在講內容大小的。是說要在一格之中塞超過 255 個中文字確實也是很少見,那格我也是因為在測試介面的容納字元數才故意打了 290 字進去。總之就是做個紀錄,也不知道有誰會看到就是了 :P
220610 補充
後來寫了個小東西(如下)去測,結果英文也是 255 字是上限 @@,原理我就不研究了,不能控制內容大小的陣列就都還是用 for 迴圈去貼吧~
Sub Test()Dim arr(0) As Variant '宣告陣列的型態為任意
For i = 1 To 1000000 '用迴圈增加文字內容的長度
X = X & "A" '文字內容隨著迴圈執行的次數,每次增加一個 A 進去
arr(0) = X '文字放入陣列
Cells(1, 1) = Application.Transpose(arr) '用 Application.Transpose 轉向並放入儲存格
Next
'執行之後看跳出警告的時候 i 的數字就是上限囉~
'執行之後看跳出警告的時候 i 的數字就是上限囉~
End Sub
沒有留言:
張貼留言