Mam napisać program który sumuje dane w kolejnych wierszach z kolumn 2 i 3 i wpisuje wynik do kolumny 3. program ma liczyć dopóki w 1 kolumnie jest opis.
To mój pierwszy program. Nigdy nie miełam styczności z VBA, dlatego proszę o wyrozumiałość.
Napisałam coś takiego:
Sub dodawanie()
Dim wiersz As Long
Dim kolumna As Long
Dim wartość
Dim składnik
Dim suma
Dim skrót
wiersz = 1
kolumna = 1
składnik = Cells(wiersz, kolumna + 1).Value
wartość = Cells(wiersz, kolumna + 2).Value
skrót = Cells(wiersz, kolumna).Value
Do While skrót <> “”
Cells(wiersz, kolumna + 3).Value = suma
If skrót = “” Then
Exit Do
End If
suma = wartość - składnik
Loop
End Sub
Niestety program liczy tylko 1 wiersz i nie przechodzi dalej, nie wiem niestety jak to zapisać. Program po przeliczeniu tego wiersza zawiesza mi cały arkusz. Nie wiem czy użyłam odpowiedniej funkcji. Proszę o pomoc.
Nie zwiększasz wiersza to ci się zapętla. Imo za dużo zmiennych, nie potrzebnie robisz if, A zmiana wartości zmiennych powinna być w pętli (bo będziesz miał ciągle ten sam wynik)
W skrócie (nie testowane):
Sub dodawanie()
wiersz = 1
kolumna = 1
Do While Cells(wiersz, kolumna).Value <> ""
Cells(wiersz, kolumna + 3).Value = Cells(wiersz, kolumna + 1).Value + Cells(wiersz, kolumna + 2).Value
wiersz = wiersz +1
Loop
End Sub
Mam jeszcze jeden problem dodawanie działa poprawnie, chciałam jeszcze żeby przy następnym dodawaniu kasowało wyniki w pustych teraz wierszach napisałam tak:
Do While Cells(wiersz, kolumna) = “”
Rows(wiersz).Clear
wiersz = wiersz + 1
Loop
ale program się zapętla. Proszę o pomoc.
– Dodane 30.08.2012 (Cz) 14:58 –
wymyśliłam jeszcze taką opcję
Do While Cells(wiersz, kolumna) = “”
Rows(wiersz).Select
Selection.Delete Shift:=xlUp
wiersz = wiersz - 1
Loop
jednak usuwa tylko 1 wiersz o podanym warunku a nie wszystkie. Proszę o pomoc.