[VBA ] EXCEL 2010 自定意函數的回傳值問題 (已解決)
大家好,謝謝大家的建議,我已經發現問題在哪了。
這邊提出我的想法,順便提醒大家可能有的盲點。
1.VBA預設是從0開始,所以ReDim temp(1, n)實際上會是temp(0 To 1, 0 To n)
接著我排列時卻是指定從1開始,所以0那列沒有值所以會是0
當我在主程式沒有指定temp(1, i)時,理所當然會先回傳0那列的值
加上又限制只需要一列的情況,就會收到0的回傳值。
2.這點我比較不確定。以陣列當做輸入值時,儲存格的用法和vba的程式的用法有差異
若是想建立worksheet的Function時,建議還是把變數宣告成Range。
關於這點我還會在確認,我印象中Variant可以接受所有TYPE的資料才對。
這邊有錯的話,還請多多指教。謝謝
以下是我的FUNCTION
Function rowcut(inputmatrix As Variant, m As Integer) As Variant
Dim i, j As Integer
Dim n As Integer
Dim temp() As Double
n = UBound(inputmatrix, 2)
ReDim temp(1, n) As Double
For i = 1 To n
temp(1, i) = inputmatrix(m, i)
Next
rowcut = temp
End Function
這個Function的目的是要擷取一個矩陣的某一列
但是在主程式使用這個function的回傳值會變成全部是0
例如,
1 2 3
4 5 6
7 8 9
如果我要擷取第二列,期望的結果應該是4 5 6。
但是在主程式得到的結果卻是0 0 0。
若是直接在worksheet使用的話,則會直接變成#VALUE!(我有考慮到ctrl+shift+enter)
因為完全沒有跑出任何error message,所以我完全不知道到底問題出在哪裡
此外,若是在function中加個,MsgBox temp(1,1)之類的來觀察結果的時候,
執行vba主程式會出現正確的結果,但是在worksheet則是完全沒有反應
直接出現#VALUE!
請有經驗的前輩,指點一下問題出在哪裡,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 133.11.172.30
→
05/22 10:34, , 1F
05/22 10:34, 1F
→
05/22 10:59, , 2F
05/22 10:59, 2F
推
05/22 12:51, , 3F
05/22 12:51, 3F
→
05/22 16:36, , 4F
05/22 16:36, 4F
※ 編輯: s06yji3 來自: 133.11.172.30 (05/22 17:24)
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章