Jak utworzyc petle w petli w VBA?


(Sylwiawysmyk) #1

Potrzebuję, aby dla w=1 policzyła się sumaysin i sumaycos, następnie podstawiła do wzoru (2 / suma) * sumaysin i (2 / suma) * sumaycos a następnie, aby te 2 policzone wyniki zapisały się do tabeli w excelu odpowiednio w komórki P10 i Q10. Powinno się teraz do w dodać, 1 czyli w=w+1 i te same czynności wykonać dla w=2. I tak powinny powstać 2 kolumny z rożnymi wartościami. Ja jednak otrzymuje te same wartości tzn. w jednej kolumnie są te same wartości liczone dla w=1 i w drugiej tak samo, choć wartości z kolumny pierwszej i drugiej są rożne oczywiście. Jak mam zmienić program, aby działał tak jak tego oczekuje, tzn., aby 'w' się zmieniało?

Z góry dziękuję za pomoc.

[i = 6

    suma = 0 'suma to liczebnosc proby

    While Arkusz1.Cells(i, 1) <> ""

     suma = suma + 1

     i = i + 1

    Wend


polowasumy = (suma / 2) - 1

w = 1

k = 10

While w <= polowasumy

    i = 1

    While Arkusz1.Cells(i, 1) <> ""

        Arkusz1.Cells(i, 4) = Arkusz1.Cells(i, 1) - Arkusz1.Cells(i, 3) 'liczymy Y teoretyczne

        Arkusz1.Cells(i, 5) = (2 * 3.14159265358979 * w * Arkusz1.Cells(i, 2)) / suma 'liczymy 2*pi*i*t/n

        Arkusz1.Cells(i, 6) = Sin(Arkusz1.Cells(i, 5)) 'liczymy sin(2*pi*i*t/n)

        Arkusz1.Cells(i, 7) = Cos(Arkusz1.Cells(i, 5)) 'liczymy cos(2*pi*i*t/n)

        Arkusz1.Cells(i, 8) = Arkusz1.Cells(i, 4) * Arkusz1.Cells(i, 6) 'liczymy Ywst*sin(2*pi*i*t/n)

        Arkusz1.Cells(i, 9) = Arkusz1.Cells(i, 4) * Arkusz1.Cells(i, 7) 'liczymy Ywst*cos(2*pi*i*t/n)

        Arkusz1.Cells(i, 10) = Arkusz1.Cells(i, 4) * (Cos(Arkusz1.Cells(i, 2) * 3.14159265358979)) 'liczymy Ywst*cos(pi*t)

        i = i + 1

    Wend


    i = 6

    sumaysin = 0

    sumaycos = 0

    sumapit = 0


    While Arkusz1.Cells(i, 1) <> ""

        sumaysin = sumaysin + Arkusz1.Cells(i, 8)

        sumaycos = sumaycos + Arkusz1.Cells(i, 9)

        sumapit = sumapit + Arkusz1.Cells(i, 10)

        i = i + 1

    Wend


        Arkusz1.Cells(k, 16) = (2 / suma) * sumaysin

        Arkusz1.Cells(k, 17) = (2 / suma) * sumaycos


    w = w + 1

    k = k + 1

Wend

]

// Poprawiłem Twój post - dodałem tagi code.

Kaka'


(Kaka') #2

sylwiawysmyk przypominam, że na forum należy pisać także z polskimi literkami (ą, ę, ź, ż, ć, ó, ł, ń), dlatego proszę o poprawienie swojego posta. W przypadku zignorowania prośby, temat poleci do śmietnika.