pole jako parametr funkce   zodpovězená otázka

VB6/VBA

Preji pekny den, aspon prozatim.

Mam problem ye se me i nedari korektne zavolat funkci jejiz jediny parametr je pole. Nechci to resit globalnimi promennymi ani nejakymi vnejsimy cykly. Kdysi jsem to v C resil pomoci pointru ktery mi ukzoval pocatek predavaneho pole. Avsak jak se to resi ve VBA netusim. Predem dik za pripominky

Static Sub main()
    Static pole() As Integer
    Static poc As Integer
    For poc = 1 To 3
        pole(poc) = poc
    Next

    b_vseOK = fpole(pole) ' 1. pokus
    pole () = fpole(pole) ' 2. pokus
End Sub
Private Function pokus(fpole() As Integer) As boolean   ' 1.pokus
Private Function pokus(fpole() As Integer)() As Integer ' 2.pokus

    For poc = 1 To 3
        pole(poc) = 10
    Next
End Function
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim p() As Integer = {1, 2, 3, 4, 5}
        PolniFunkce(p)
    End Sub

    Private Function PolniFunkce(ByVal Pole() As Integer) As Boolean
        For Each I As Integer In Pole
            Debug.Print(I)
        Next
    End Function

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No on to ale potřebuje pro VBA, tohle je VB.NET

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pravda, je tam zmínka o VBA.

Funkce by měla něco vracet?

První má vracet stále False

a druhý by měl vrátit pole?

Sub TestPolni()
    Dim pole1(), pole2(), pole3()
    pole1 = Array(1, 2, 3)
    pole2 = VratPole2xArguments(1, 2, 3)
    pole3 = VratPole3xPole(pole1)
End Sub

Function VratPole2xArguments(ParamArray Arguments() As Variant) As Variant
    Dim i As Integer
    For i = LBound(Arguments) To UBound(Arguments)
        Arguments(i) = Arguments(i) * 2
    Next
    VratPole2xArguments = Arguments
End Function

Function VratPole3xPole(Arguments() As Variant) As Variant
    Dim i As Integer
    Dim Args()
    Args = Arguments
    
    For i = LBound(Args) To UBound(Args)
        Args(i) = Args(i) * 3
    Next
    VratPole3xPole = Args
End Function

Nevím přesně záměr, ale snad test polní napoví.

Mělo to být VBA, ač je to v kategorii VB.Net?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diky a přiznávám, že jsem dotaz umístil do špatné kategorie. Bohužel zaregistroval jsem tuto volbu pozdě a nepřišel jsem na to jak svůj příspěvek odstranit, nebo přemístit :(

Jinak práce s funkci VratPole3xPole se mi na 1. pohled jevi jako presne to co jsem hledal.

Jeste jednou dik

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback