簡體   English   中英

Excel VBA函數中的變量類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM