Elektroda.pl
Elektroda.pl
X
SterControl
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

makro petla vba - excel vba jak poprawnie sformulowac petle rada

agaa2210 17 Maj 2014 23:31 1485 2
  • #1 17 Maj 2014 23:31
    agaa2210
    Poziom 5  

    czy ktoś mógłby mi doradzić co robię źle w tym makro?
    Liczy wartości, ale źle i nie umiem znaleźć błędu.
    Mam napisać funkcję która w oparciu o pewna liczbę punktów na krzywej poda przybliżoną wartość tej krzywej zgodnie ze wzorem:
    ∑√(xi+1-xi)^2+(yi+1-yi)^2
    Całe wyrażenie jest pod pierwiastkiem, byłabym wdzięczna za radę

    Function dlugosc(dane As Range) As Double
    x = dane.Cells(i, 1)
    y = dane.Cells(i, 2)
    For i = 1 To dane.Rows.Count Step 1
    roznica = (dane.Cells(i + 1, 1) - dane.Cells(i, 1)) ^ 2
    Suma = roznica + (dane.Cells(i + 1, 2) - dane.Cells(i, 2)) ^ 2
    Next i
    dlugosc = Sqr(Suma)
    End Function

    0 2
  • SterControl
  • Pomocny post
    #2 18 Maj 2014 05:55
    JRV
    Specjalista - VBA, Excel

    Witaj

    Pierwszy błąd

    agaa2210 napisał:
    x = dane.Cells(i, 1)
    y = dane.Cells(i, 2)
    i - nie zostały jeszcze przyznane, może być tylko komentarz.

    Drugi błąd, ważne
    agaa2210 napisał:
    For i = 1 To dane.Rows.Count
    agaa2210 napisał:
    dane.Cells(i + 1, 1)

    Cells(i + 1, 1) - Wartość będzie równa null, jeśli określisz całego zakresu jako argumentu
    Trzeba For i = 1 To dane.Rows.Count -1

    Suma = - wykorzystywane do nazwy zmiennej, który pasuje do nazwy funkcji
    i co najważniejsze – musimy dodać poszczególnych segmentów:
    dlugosc = dlugosc + Sqr(Suma)
    Next i

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    lub bardziej wyraźnie
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • SterControl
  • #3 18 Maj 2014 09:28
    agaa2210
    Poziom 5  

    Dziękuję za pomoc dopiero zaczynam pracę z vba i się uczę.
    Wszystko działa :)

    0