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

Podawanie wartości w drukowanym arkuszu

26 Wrz 2014 10:34 1158 13
  • Poziom 9  
    W arkuszu "druk" mam taki kod:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Po naciśnięciu przycisku „Sumowanie” w arkuszu „druk” następuje sumowanie narastająco dla każdej pozycji w kolumnie „K”. Mi chodzi o coś innego.
    Nie kogę sobie poradzić z tym żeby po naciśnięciu na formularzu przycisku „DRUKUJ” drukował się wybrany zakres z kwotami w ostatniej kolumnie.
    Na przykład w ramce WYSZUKAJ w polu "Nr zmiany" wstawiam 1, następnie po naciśnięciu przycisku „Drukuj” wyskakuje plik do druku(dziękuję Panu adamas_nt). Czy da się jakoś powiązać ten powyższy zapis z procedurą drukowania. A może da się zastosować jakieś inne rozwiązanie żeby sumowało i podawało jeden końcowy wynik w kolumnie H (na końcu) po sortowaniu, w pliku do drukowania, bez liczenia narastająco. Dziękuję za każdą pomoc. Wyczerpałem swoje możliwości dla rozwiązania tego problemu.
  • Pomocny post
    Moderator Programowanie
    Rozumiem aluzję ;)
    Najprościej byłoby wstawić .formula="=sum..., ale skoro mielisz w pętli. Zlicz w niej sumę i dopisz na końcu:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Super dziękuję. Tylko nie wiem dlaczego ten wynik wychodzi 3 razy wyższy niż przeliczony ręcznie. Można coś z tym zrobić?
  • Pomocny post
    Moderator Programowanie
    Oops. Nie w tej pętli :) Sorry, roztrzepaństwo...
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Serdeczne dzięki. :D
  • Poziom 9  
    Mam taki kod:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Proszę o pomoc. Jak zrobić, żeby w Label5 wyświetlał się wynik, po sortowaniu w polu „Nr zmiany”. Label4 informuje, że suma wynosi …, a w label5 będzie wyświetlał się wynik. Wynik będzie się wyświetlał po wstawieniu np. 1 w polu „Nr zmiany” w ramce „Wyszukaj”. Nie wiem jak to zapisać mając ten kod. Serdecznie dziękuję za dotychczasową pomoc.
  • Poziom 9  
    Chyba źle sformułowałem moją prośbę o pomoc. A więc jeszcze raz. Teraz wstawiłem sumowanie kolumny z listy formularza. Po wstawieniu liczby np.:1 w polu „Nr zmiany” suma jest wyświetlana na formularzu w kontrolce „ Label 5”. Ale zrobiłem to poprzez arkusz „druk”, bo tylko tak potrafię. Chodzi mi o to jak zrobić, żeby procedura liczyła bezpośrednio bez liczenia w arkuszu „druk”. Czy jest taka możliwość i jak to można zrobić? Panie adamas_net czy Pan pomoże?.
  • Pomocny post
    Moderator Programowanie
    Zadeklarowałem zmienną publiczną 'suma1' w formularzu. Na liczenie przy Initialize powinieneś wpaść sam. ?

    Przy zmianie w textBox'ach musisz wyzerować, przeliczyć i zapisać do Label'a. Tu nie możesz liczyć przy zapisie do tablicy, bo suma musi wyjść bez warunków (kasowanie ostatniego znaku). Przykład w polu 'Zmiana'.
  • Poziom 9  
    Bardzo dziękuję za pomoc. Tym bardziej, że bezcenne są wyjaśnienia. Przynajmniej dla mnie. Ukłony.
  • Poziom 9  
    Siedzę już nad tym problemem 3 dni i nie mogę sobie poradzić. Poradziłem sobie z tym, że w kontrolce „Label5” wyświetlają się liczby sformatowane z oddzieleniem tysięcy i dwoma miejscami po przecinku. Daje mi to ten zapis:
    Label5.Caption = Format(Round(suma1, 7), "# ### ###.00")
    To pozwala na szybszą orientację w wyświetlanych kwotach. Próbuję teraz zrobić to samo z 8 kolumną w ListBox. Chodzi o to, że jak wybiorę w polu „Nr zmiany” np. 1 to powinny się wyświetlić na liście liczby z dwoma miejscami dziesiętnymi innymi niż zera, ponieważ takie są w arkuszu. Obecnie wszystkie liczby na liście po wybraniu w polu „Nr zmiany” (odpowiedniej zmiany 1-4) wyświetlają się z dwoma zerami na miejscach dziesiętnych. Uzyskałem tylko tyle, albo jak na moje możliwości, aż tyle, że liczby w ListBox wyświetlają się w układzie jak w „Label5” t.j. z oddzieleniem tysięcy. I dalej stanąłem.
    Nie wiem też jak zrobić aby liczby w 8 kolumnie na tej liście wyświetlały się jako wyrównanie do prawej. Jeżeli wybiorę we właściwościach TextAlign – 3 to wtedy wszystkie kolumny są równane do prawej strony kolumny. A mi chodzi o to żeby tylko ta jedna 8 kolumna z kwotami była wyrównana do prawej. Proszę o pomoc jeżeli jest to możliwe. Dziękuję.
  • Moderator Programowanie
    Nie znam metody na wyrównanie wybranych kolumn w ListBox'ie. Wszystkie źródła twierdzą, że jest to niedostępne w Excelu. Można próbować wstawiać spacje wiodące wg długości ciągu, ale to tylko przy czcionce o stałej szerokości, a w przypadku liczb idealnie nigdy nie będzie.

    Jakimś rozwiązaniem jest wstawianie pustego znaku chr(255) zamiast spacji. Będzie równo, ale... w kropki ;)
    W Twoim przypadku trzeba zastosować po formatowaniu liczby, dodając spację dla liczb <1000. W przykładzie dla Initialize formularza
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Podawanie wartości w drukowanym arkuszu

    Wreszcie pytanie zasadnicze: Dlaczego nie zmienisz wyrównania w całym ListBox'ie?
  • Poziom 9  
    Bardzo ładnie jest to w kropki. I równa do prawej. Nie zmieniłem równania całego ListBoxa ponieważ ładniej jest jak wszystko jest równo do lewej a kwoty do prawej. Ale tak mi się pewno tylko wydaje. Tak czy inaczej to bardzo jestem wdzięczny za pomoc. Jest tylko jeszcze jedna rzecz taka, że w miejscach dziesiętnych liczb pokazywane są same zera. Czy da się z tym coś zrobić. Dziękuję baaardzo za już otrzymaną pomoc.
  • Moderator Programowanie
    Jas_1 napisał:
    Czy da się z tym coś zrobić
    .List(lngIndex, 7) = (Format(Round(.List(lngIndex, 7), 2), "#,##0.00"))
  • Poziom 9  
    Niesamowite. Jestem pełen podziwu. Baaardzo dziękuję. :oops: