簡體   English   中英

調用從電子表格返回自定義類型的VBA函數

[英]Call VBA function that returns custom type from spreadsheet

我有一個vba函數,返回一個自定義數據類型,定義為:

Public Type stockValue
        stock As String
        value As Double
End Type

我的問題是,當我從電子表格單元格調用函數時,該如何處理? 例如,假設我希望單元格確實顯示stock價值,我嘗試過=function().stock ,但它不起作用

任何幫助表示贊賞,謝謝!

Function getLowestPnl(strat As String, rank As Integer) As stockValue

    Call Conecta_DB(conexao)
    Set registros = New ADODB.Recordset

    strSQL = "SELECT stock,sum([value]) FROM Reports.dbo.Entry WHERE idStrategy='" & strat & "' and idType=1 GROUP BY stock  ORDER BY sum([value])"
    'strSQL = "SELECT [finance],[sales],[management],[research],[administration] FROM [COS].[dbo].[Complementarity] WHERE [idCompany] =" & idCompany & " and [year]=" & year & " and [CEO]=1"

    registros.Open strSQL, conexao, adOpenStatic, adLockOptimistic

    parar = False
    If Not registros.EOF Then

        x = registros.GetRows()
        i = 0
        Do While parar <> True

            If i = (rank - 1) Then
                getLargestShortExp.stock = Trim(x(0, i))
                getLargestShortExp.value = x(1, i)
                parar = True
            End If
            i = i + 1
        Loop

    End If

    registros.Close
    getLowestPnl = ret
End Function

您只能返回Excel從用戶定義的函數中可以理解的數據類型。 Excel無法理解自定義數據類型。

相反,您將必須返回一個自定義數據類型中包含2個值的變量數組。 然后,您可以將函數數組輸入2個單元格中,或者使用另一個函數(如INDEX)從返回的數組中檢索所需的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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