2012-11-09 26 views
0

我試圖讓下面的代碼,但它給出了錯誤Excel VBA中的子腳本外邊界錯誤

以下的輸出是代碼:


Dim strRisk() As String 
Dim riskLen As Integer 

strRisk = SplitMultiDelims(ActiveCell.Offset(0, 9).Value, "@") 
MsgBox UBound(strRisk) 

錯誤:


Run time error '9': 
Subscript out of range 

引用單元格中的值是不爲空,還有什麼可能是原因?有沒有另一種方法來做到這一點。

請幫我

+0

您可能還需要爲SplitMultiDelims共享代碼,很可能它不會正確地返回strRisk所需的數組。 – mattboy

+0

'SplitMultiDelims' - ? – whytheq

回答

2

如果定義Dim strRisk() As String作爲一個動態數組,那麼你需要Redim strRisk (n)並進一步指strRisk與對應的索引:strRisk(i)=....

如果你想strRisk存儲爲數組,使用Dim strRisk As Variant,然後 strRisk=...將工作。

+0

+1這看起來像答案 – whytheq

+0

我和你在一起。 @roshank測試這個:'strRisk = Array(「10」,「20」,「30」)' - >它失敗,除了strRisk是一個Variant或者像Jüri建議的那樣使用它。 – Jook

0

在開始strRisk的行上添加一個BreakPoint,然後運行代碼。

如果您現在在即時窗口中運行Excel.ActiveCell(0, 9).select,那麼它肯定是您希望此代碼定位的單元格?