Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Talulukon välitys funktiolle

Sinis [21.04.2006 14:35:08]

#

Pystyykö taulukkoa välittämään funktiolle (vb6) ja jos voi niin miten? Tarkoituksena olisi vertailla kahta taulukkoa: (1 to 8, 1 to 16) as integer, ja ajattelin, että se kävisi parhaiten funktiolla, joka sitten palauttaisi noista taulukoista kootun taulukon. Onnistuuko?

BadSource [21.04.2006 15:10:52]

#

Välitä arvo Variant-muotoisena, jolloin funktiolle voi välittää lähes mitä tahansa. Onko noita taulukkoja kaksi, yhdestä kahdeksaan (1 to 8) ja yhdestä 16:sta (1 to 16), vai onko taulukossasi useampia dimensioita (1 to 8, 1 to 16)? VB:llä menee sormi suuhun, jos sen pitää itse yrittää arvata dimensioiden määrä, mutta tuohon löytyy apua tuolta.

'formille yksi CommandButton
Private Sub Command1_Click()
    Static kerta As Boolean
    Dim arr(2) As Integer
    Dim muu As Integer
    Dim abu As Variant

    kerta = Not kerta 'vaihdetaan verrattavaa arvoa joka toisella kerralla, kun nappia painetaan
    If kerta Then
        abu = test(arr) 'testataan taulukkoa
    Else
        abu = test(muu) 'testataan kokonaislukea
    End If
    'VarType palauttaa taulukon kohdalla yhdistetyn arvon taulukko + mitä muotoa taulukko on
    'muuten voitaisiin suoraan verrata VarType()=jotain
    If VarType(abu) - vbArray > 0 Then
        MsgBox "taulukko"
    Else
        MsgBox abu
    End If
End Sub

Private Function test(ByVal arvo As Variant) As Variant
    If VarType(arvo) - vbArray > 0 Then
        test = arvo
    Else
        test = "ei ollut taulukko"
    End If
End Function

Edit: UBound-funktiolla pääsee tarkemmin kiinni taulukon kokoon, kun sitä lähemmin sitten tarkastellaan.

Sinis [23.04.2006 21:47:00]

#

Taulukkoina on 2-dimensioinen vakiokokoinen taulukko. Tarkoituksena olisi välittää nuo taulukot funktiolle, joka selvittäisi, miten taulukot eroavat toisistaan ja jos ehdot täyttyvät niin funktio palauttaisi true-arvon. Pääsen neuvoillasi hyvin eteenpäin. Kiitoksia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta