[英]Variable Types in Excel VBA Function
我想創建一個函數來計算確定范圍內的單元格。
當我將calc的值返回到excel時,我得到一個#VALUE! 錯誤,表示變量類型不同。
我嘗試使用Cint(var)並得到相同的錯誤。
這是沒有Cint()的代碼:
Function CalcTest(Interval As Range) As Integer
Dim x As Integer
Dim y As Integer
x = Interval.Offset(0, 0).Value
y = Interval.Offset(1, 0).Value
CalcTest = x + y
End Function
我已經嘗試過:
Function CalcTest(Intervalo As Range) As Integer
CalcTest = Interval.Offset(0, 0).Value + Interval.Offset(1, 0).Value
End Function
和:
Function CalcTest(Interval As Range) As Integer
Dim x As Integer
Dim y As Integer
x = CInt(Interval.Offset(0, 0).Value)
y = CInt(Interval.Offset(1, 0).Value)
CalcTest = x + y
End Function
並且無需聲明de函數類型:
Function CalcTest(Interval As Range)
...
...
End Function
在Excel中,我會在一定范圍內調用該函數:
=CalcText(A1:A2)
我究竟做錯了什么?
#大圖:
我需要做的是在$ N col中每次出現鍵值時,都在$ R col的合計值的任何地方創建一個cel。
對於$ N Col中的每次“ TH”,我都需要在cel中累積該行的$ R col價值。
許多其他$ N值相同。
在此樣本中,TH在$ N中的累計cel的值為25。
Tks的幫助!
這是您要嘗試的嗎?
Public Function CalcTest(rng1 As Range, rng2 As Range) As Variant
On Error GoTo Whoa
CalcTest = rng1.Value + rng2.Value
Exit Function
Whoa:
CalcTest = "Please check the Range Values"
End Function
在Excel單元格中,將此公式=CalcText(A1,A2)
您正在對自己進行這種方式。
將其放入第2行的單元格中並將其向下拖動:
=SUMIF(N$2:N2,"TH",R$2:R2)
您不應將代碼簡化為不完全代表您的問題的代碼。 從您的評論和問題。
Function CalcTest(Interval As Range) As Integer
Dim x As Range
CalcTest = 0
For Each x In Interval
If IsNumeric(x) Then
CalcTest = CalcTest + x.Value
End If
Next x
End Function
這樣可以確保您要累加的實際上是一個數字。
但這與工作表功能沒有什么不同:
=Sum(Range)
如果您要轉換的內容無法收斂,則僅將值轉換為Integer
是行不通的。 如果將Letter傳遞給CInt()
函數,它將只會失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.