2013-10-10 71 views
0

我想創建一個函數來計算確定範圍內的單元格。Excel中的變量類型VBA函數

當我將calc的值返回到excel時,我得到一個#VALUE!錯誤,這意味着 變量類型是不同的。

我試圖使用Cint(var)並得到相同的錯誤。

這裏是沒有目標類()的代碼:我已經嘗試過

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 

,沒有declarating去功能類型:

Function CalcTest(Interval As Range) 
    ... 
    ... 
End Function 

,並在Excel我打電話與一定範圍內的功能:

=CalcText(A1:A2) 

我到底做錯了什麼?

大圖片:

enter image description here

我需要做的就是在計數德總價值在$ R山坳 的鍵值每occurrency任何地方創建一個CEL in $ N col。

對於每次我在$ N Col中有「TH」時,我都需要在該cel中累積該 行的de $ R col值。

相同的許多其他$ N值。

在此示例中$ N累計CEL爲TH的值是25

韓國社交協會的幫助!

+1

爲什麼你需要VBA? –

+1

爲什麼不在Excel公式中使用SUMIF語句? – enderland

+0

正是我的想法:) –

回答

0

你對自己做出這樣艱難。

將這個變成一個細胞在第2行和拖下來:

=SUMIF(N$2:N2,"TH",R$2:R2) 
+0

Tks的小費,但我知道!我只是簡化了功能問這裏!看看Siddharth的答案! Tks的幫助! –

+0

@EdgarBarcellosJunior請發佈代碼,其實際顯示您的問題 - 您在實際代碼中的錯誤必須與以上不同,因爲上述代碼的錯誤是我的答案(和Siddharth Rout)的地址。 – enderland

+0

我編輯我的問題與大圖片和一個截圖的鏈接。請看看並感謝您的幫助! –

0

這是你正在嘗試?

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)

enter image description here

+0

不完全。我只是簡化了在這裏問的功能。但我真正需要做的是在$ A:$ D這樣的大範圍內搜索值,並且執行n次。 所以我需要使用rang.Offset(x,y).Value來代替rang.Value和你一樣。 真正的問題是,如何操作整數或長數據在一個rang.Offset(x,y).value? Tks的幫助! –

+0

在這種情況下,你不需要'.Offset()'。您需要遍歷範圍。見@恩德蘭的答案:) –

+0

@EdgarBarcellosJunior我看到你已經重新定向恩德蘭這個職位:第。好的,你能準確解釋你想達到的目標嗎?你是否想要在一系列混合類型中找到所有數字的總和? –

0

你不應該簡化代碼的東西,並不公平地代表你的問題。從你的評論和問題。

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如果你正在轉換是不是converatble將無法正常工作。如果您將一封信傳遞給CInt()函數,它將會失敗。

+0

Tks爲建議。但我現在很困惑。如果excel中的cel值是一個像'10'這樣的整數,爲什麼我不能使用偏移量在VBA腳本中進行操作(在搜索範圍內的這個單元格的情況下)? –