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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

1
2
3
4
5
6
7
8
9
10
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?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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

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