Wątek przeniesiony 2021-09-16 10:16 z Inne języki programowania przez cerrato.

VBA problem z działaniami

0

Witam

Od razu zaznaczę że jestem początkujący i pracuję na nie swoim kodzie. Poniższy kod wykonuję automatyczne działania na zawartej tabeli. Konkretnie pomniejsza o sprzedaż ilość towaru i wartość towaru z danej dostawy dla konkretnego kodu i to wszystko działa dopóki nie wykonuję się działań na liczbach dziesiętnych. Tabela z lewej służy za wprowadzanie danych w po prawej stronie po aktualizacji pojawia się tabela pomniejszona o sprzedaż dla danego kodu.

Problem jest opisany w załączonym pliku komentarzami.

Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveCell.FormulaR1C1 = "=COUNTIF(C[1],""towar"")"
    Range("A12:G12").Select
    Selection.AutoFill Destination:=Range("A12:M12"), Type:=xlFillDefault
    Range("A12:M12").Select
    Range("F12:G12").Select
    Selection.AutoFill Destination:=Range("F12:L12"), Type:=xlFillDefault
    Range("F12:L12").Select
    Selection.AutoFill Destination:=Range("F12:M12"), Type:=xlFillDefault
    Range("F12:M12").Select
    Range("K11").Select
    ActiveWindow.SmallScroll Down:=3
    Range("I10").Select
    ActiveWindow.SmallScroll Down:=-12
    Range("J12").Select
    ActiveWindow.SmallScroll Down:=3
    Range("J23").Select
    ActiveWindow.SmallScroll Down:=-3
End Sub
Private Sub CommandButton1_Click()
Dim i As Long, d As Long, sp As Integer, il As Integer
Dim towar As String, pozp As Long, pozk As Long, j As Long
Dim k As Integer

'On Error GoTo laend

Range("A:F").Copy Destination:=Range("H:M")

towar = Cells(2, 8).Value
pozp = 2
i = 1

Do While Cells(pozp, 8).Value <> ""

    Do While Cells(pozp + i, 8).Value = towar And Cells(pozp + i, 8).Value <> ""
        i = i + 1
    Loop
    
    pozk = pozp + i - 1
    sp = Cells(pozp, 13).Value
    
    For j = pozp To pozk
        il = Cells(j, 11).Value
        If sp >= il Then
            Cells(j, 11) = 0
            sp = sp - il
        Else
            Cells(j, 11).Value = Cells(j, 11).Value - sp
            Exit For
        End If
    Next j
    
    For k = pozp To pozk
        Cells(k, 13).Value = 0
    Next k

    pozp = pozk + 1
    towar = Cells(pozp, 8).Value
    i = 1
 
Loop

For i = 2 To pozk
    Cells(i, 10).Value = Cells(i, 11).Value * Cells(i, 12).Value
Next i

End Sub
0

W kolumnie F masz wartości z przecinkami, a powinieneś mieć z kropką...

0
Marcin.Miga napisał(a):

W kolumnie F masz wartości z przecinkami, a powinieneś mieć z kropką...

jeżeli zamienię ręcznie przecinki na kropki w kolumnie F wyskakuję błąd, ale podejrzewam że nie o to ci chodziło ? :) Jakbyś mógł bardziej sprecyzować co trzeba poprawić. Coś w kodzie czy tylko bezpośrednio w pliku?

0

Zamień w kolumnie F liczby na liczby, czyli daj z kropką, bo teraz to nie jest liczba/
w

Private Sub CommandButton1_Click()

daj deklaracje tak:

Dim i As Long, d As Long, sp#, il As Integer

0

Jest lepiej :) ale jeszcze to nie to , teraz pojawia się problem z wartościami minusowymi :)

Jakbyś mógł rzucić okiem na załączony plik , opisałem sytuację komentarzem dla danego pola.

Będę wdzięczny

0

Zmien deklaracje zmiennych na:

Dim i As Long, d As Long, sp#, il#
0

Zamieniłem wczoraj większość zmienny na Double i też ruszyło :).

Dziękuję za pomoc, temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1