Ved hjelp av tabeller i UDF er i Excel 2007

stemmer
1

Jeg skriver en UDF for Excel 2007 som jeg ønsker å sende et bord til, og deretter referere deler av det bordet i UDF. Så, for eksempel min tabell kalt Stock kan se omtrent slik ut:

Navn Kostnads ​​varer på lager

Teddybjørn £ 10 10

Lollipops 20p 1000

Jeg har en UDF som jeg ønsker å beregne den totale kostnaden for alle elementer igjen på lager (selve eksempelet er mye mer kompleks som ikke kan egentlig gjøres uten veldig komplisert formel)

Ideelt syntaksen for UDF vil se omtrent slik ut

TOTALPRICE(Stock)

Som fra hva jeg kan trene ville bety UDF ville ha signaturen

Function TOTALPRICE(table As Range) As Variant

Det jeg har problemer med er hvordan man skal referere til kolonner i tabellen og iterere gjennom dem. Ideelt sett vil jeg gjerne være i stand til å gjøre det refererer kolonneoverskriftene (så noe som bord [Kostnad]).

Publisert på 10/10/2008 klokken 09:35
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Dette er helt grunnleggende (no pun intended), men det vil gjøre det du beskriver. For større bord kan det bli treg som under panseret det kommer frem og tilbake mellom makrofunksjon og regnearket, og den slags aktivitet legger opp.

Det forutsetter at du har en rad med overskrifter og en kolonne med navn (derav for loop variabler som starter fra 2).

Det er alle slags ting som kan være nødvendig - vi kan spare de for et annet spørsmål eller en ny runde på dette.

Merk at funksjonen returnerer en "Variant", btw ...

Public Function TotalPrice(table As Range) As Variant

Dim row As Long, col As Long
Dim total As Double

    For row = 2 To table.Rows.Count
        For col = 2 To table.Columns.Count
            TotalPrice = TotalPrice + table.Cells(row, col) * table.Cells(row, col + 1)
        Next
    Next

End Function
Svarte 10/10/2008 kl. 09:58
kilden bruker

stemmer
0

Merk: Jeg har ikke Excel 2007 og jeg prøver å skrive dette ved hjelp av MSDN doc på nettet.
Ser ut som utvalget vil ha ListColumns samling

Så kan syntaksen være table.ListColumns ( "Cost").
Virker dette?

Svarte 10/10/2008 kl. 15:12
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more