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.

Uzupełnienie makra w programie.

21 Gru 2011 14:06 1617 16
  • Poziom 15  
    Witam ponownie.
    szczególnie marka ,który praktycznie w większości napisał mi makro w tym programie i jego proszę o pomoc. Program hula mi super, ale ja wymyśliłem pewne usprawnienie i mimo pomocy forumowiczów nie daję sobie do końca rady.
    Omówię pokrótce o co mi chodzi i pokażę jak mi pomagali koledzy.Program który wysyłam jest do minimum skrócony i pozbawiony danych podlegających ochronie danych.
    W Skoroszycie SŁOWNIK znajdują się wpisywani kontrahenci , oraz ich (kolejne) numery niezbędne do wstawiania danych w odpowiednie kolumny w poszczególnych miesiącach. Jeżeli zostanie wybrana pierwsza pozycja , to po odpowiednim wpisaniu w okienko i po wciśnięciu OK wpisujemy kwotę wpłaconą przez daną osobę (i tu następuje najważniejsze) zsumowanie wpisanych wartości "funduszu remontowego" i za pomocą makro całkowita wartość zostanie wpisana w odpowiedni wiersz w danym miesiącu w kolumnę Q i dalej w kolumnie P dokonane zostaną obliczenia ! Do tego momentu wszystko jest OK
    Jeden raz w miesiącu kiedy wpisuje się "ZOSK czynsze" pojawia się w kolumnie D numer 6 i wtedy wpisuje się ręcznie pewną wartość ( w tym wypadku 555), zmienianą rzadko.
    Chodzi o to aby w tej sytuacji (gdy w kolumnie D znajdzie się cyfra 6) zostało w kolumnę Q w tej samej linii wpisana wartość z "SŁOWNIKA" wartość z komórki G4 - która to w razie potrzeby jest zmieniana.
    Miałem 2 propozycje ale nie wiem w którym miejscu wpisać makro (mimo prób.
    Jeden kolega radził aby utworzyć dodatkową kolumnę jako przejściową , a w tej dać dodatkową formułę , działało mi to , ale w wypadku jak makro nie wpisywało wartości leciały błędy w komórce.
    Drugi (dobry sposób) proponował inny kolega , ale nie znam na tyle makra abym to zrobił.
    Propozycja :
    " Należy do makra dopisać instrukcję warunkową. A właściwie umieścić Twoje makro w gałęzi Else. "

    Schemat:
    If IsNumeric([A]) then
    [X]=[B].value
    Else
    tu Twoje makro
    End If

    Pozdrawiam Janusz.
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Moderator Programowanie
    Marek pewnie ubiera choinkę, albo ma randkę z karpiem :)
    Chodzi o kod w przycisku formularza?
    Zdaje sie, że trzeba rozwinąć instrukcję warunkową. Zamiast
    Code:
    Cells(Wiersz_ost, 17).Value = IIf(CSng(.TextBox5.Value) = 0, "", CSng(.TextBox5.Value))
    spróbuj
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    W takim przypadku uzupełnić należy także warunek komunikatu
    Code:
    If CSng(.TextBox4.Value) = 0 And .ComboBox1.ListIndex + 1 <> 6 Then
  • Poziom 15  
    Dzięki adamas - już mi kilka razy pomogłeś.
    Tym razem przysłałeś podpowiedz ,ale niestety nie mogę tego sprawdzić bowiem od tygodnia coś mi się dzieje i po kliknięciu na makra oraz ewidencja makr otwiera mi się zawsze tylko jedno (czyść) i nie widać tak jak dawniej po lewej tronie takij tabeli gdzie mogłem otworzyć przycisk i mogłem wybrać module i widziałem wielkie makro . Nie wiem co się stało -czy uszkodził się program excel ?
    Pomóż .
    Jeszcze zapytam adamsa - a gdzie to wstawić w moje makro ?
    Ps. marek pewnie już skończył ubierać choinkę - a karpia dopiero będziemy jeść.
  • Pomocny post
    Poziom 40  
    Witam (na chwilę) po świętach.
    Przepraszam za tak późny post ale święta świętami (i karp i choinka :) ) a ja mam koniec roku w firmie i niestety nie mam za dużo czasu.
    Wiem że pomagałem pisać to makro ale musiałem sobie trochę przypomnieć o co chodziło a to mimo wszystko wymaga czasu.

    Teraz z pełnym brzuchem (i w domu) mogę trochę pomóc :)

    Można zrobić tak jak radzi kolega adamas. Z tym że warunek sprawdzający musi być inny, gdyż wartość "sumy" musi być większa lub przynajmniej równa funduszowi (G4)
    Żeby to było widać zaproponuje trochę inne rozwiązanie.
    Mianowicie wybranie 6 z listy odsłoni, ale bez możliwości wpisu okienko funduszu które jest/było widoczne tylko dla czynszów (1 z listy)

    Czyli w sekcji
    Private Sub ComboBox1_Change()
    dodałbym
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    I dodatkowy warunek sprawdzający (przy naciśnięciu OK)

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    W załączeniu wprowadzone poprawki.
    Mam nadzieję że o to chodziło.

    PS. Byś zauważył w VBA to co ci znikneło w menu VBA wybierz "View" i wciśnij:
    "Project explorer" a potem też w menu View wciśnij "Propertis Windows".
    Powinny się pojawić dwa okienka po lewej.
  • Poziom 15  
    Święta , święta i po..........
    Sporo przed Świętami miałeś do roboty - co rok i ja włączałem się do przygotowania do świąt , jednak tym razem nie kiwnąłem nawet palcem w tym celu. Wynika to stąd , że jestem totalnie uziemiony - pozostał mi tylko wózek inwalidzki i łóżko - (w kwietniu miałem wylew do mózgu , co spowodowało paraliż lewej części ciała.) Nie mniej jednak prowadzę Wspólnotę i piszę programy w excelu.
    W pierwszej kolejności wykonałem to co proponowałeś w celu wyświetlenia tego co chciałem z makrami. Rewelacja i wielkie dzięki - działa wszystko wspaniale. Co ja zrobiłem , że mi wszystko znikło ? Przeinstalowałem nawet excela - i nic nie pomogło.
    Obecnie będę stosował Twoją poradę i wkleję ten kawałek do mojego makra. O efektach powiadomię w następnym poście.
    Pozdrawiam Janusz

    Dodano po 2 [godziny] 21 [minuty]:

    Witam ponownie
    Zabrałem się za wyszukiwanie w moim makrze miejsca w celu wklejenia twojej propozycji. Jednak otworzyłem plik który wysłałeś i zauważyłem , że tam znajduje się już gotowa zmiana. Połączyłem z tym mój oryginalny plik i muszę powiedzieć , że wszystko hula jak należy !!!
    Dziękuję marku za pomoc - zastanawiam się tylko jak załapałeś o co mi dokładnie chodzi? W każdym razie wszystko chyba będzie dobrze chodzić. (jesteś wielki).
    Pozdrawiam

    Dodano po 11 [minuty]:

    Ps. Jeszcze gdybyś zerknął w SŁOWNIK - to w momencie kliknięcia na - Czyść dane- lecą błędy.
  • Pomocny post
    Poziom 40  
    Rzeczywiście na bieżącą chwilę w kodzie "czysc" jest parę błędów i niepotrzebnych rozwiązań. (może coś się zmieniło w stosunku do pierwszych rozwiązań np. 13 arkuszów lub nie zablokowany arkusz DANE)

    Wejdź w edytor VBA w Module1

    kod makra czyść powinien być taki:

    nie zamknąłem w okienku kodu by zaznaczyć co należy zmienić lub dodać.
    ---------------------------
    Sub czysc()

    Application.ScreenUpdating = False

    kej1 = MsgBox("Ta operacja usunie wszystkie wpisane dane bez możliwości cofnięcia." & Chr(10) & Chr(10) & "Usunąć dane?", vbYesNo, "UWAGA !!!")
    If kej1 = 6 Then

    For x = 1 To 12
    ark = Worksheets("SLOWNIK").Cells(x + 2, 9)
    Worksheets(ark).Activate
    Worksheets(ark).Cells.EntireRow.Hidden = False
    Worksheets(ark).Range(Cells(6, 1), Cells(69, 6)).ClearContents
    Worksheets(ark).Range(Cells(6, 17), Cells(69, 17)).ClearContents

    ' tu był niepotrzebny w chwili obecnej wiersz zaczynający się od ost=...
    Worksheets(ark).Range(Cells(7, 1), Cells(68, 1)).EntireRow.Hidden = True
    Worksheets(ark).Range("A1").Select

    Next x

    Worksheets("DANE").Activate
    Worksheets("DANE").Unprotect
    Worksheets("DANE").Range(Cells(3, 29), Cells(26, 52)).ClearContents
    Worksheets("DANE").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

    End If
    Worksheets("SLOWNIK").Activate
    MsgBox "Wykonano"

    Application.ScreenUpdating = True

    End Sub
    -----------------------------

    Spróbuj wprowadzić sam zmiany jak nie podołasz lub jeszcze wyskoczy jakiś błąd to pisz.
    Na marginesie Module2 w VBA możesz usunąć (niepotrzebne - sprawdzałem zapis kodu i zapomniałem usunąć) Prawy klawisz myszy na module2 i wybierz "Remove Module2..." na pytanie odpowiedz nie.

    PS. Pamiętaj że czyszcząc ręcznie dane usunąłeś formuły wyliczające poszczególne "podkonta ". Należy je w każdym arkuszu skopiować do wiersza 69
  • Poziom 15  
    OK na razie dzięki serdeczne - zaraz się z tym pobawię - powiedz mi tylko skąd znajdujesz tyle czasu (oprócz prowadzenia firmy) na pisanie tyle każdemu ? :cry:
    Czy firma ma coś wspólnego z programowaniem , czy informatyką. :?:
  • Poziom 40  
    Ostatnio nie ma mnie tak dużo na forum bo właśnie nie mam zbyt dużo czasu.
    Firma w której pracuje to firma produkcyjna.
    Produkujemy mrożonki. :)

    Z wykształcenia jestem ekonomistą (dodatkowo rachunkowość na podyplomowych) i taki mam oficjalny angaż. Jednak oprócz biznesplanów, zestawień, prognoz itp przeznaczonych dla prezesa (tu znajomość excela to podstawa), koordynuje pracę oprogramowania księgowego i produkcyjnego w firmie jak i całej sieci i jednostek roboczych. I właściwie muszę przez to być (znać sie na tym w razie konieczności poprawy jakiegoś błędu) księgowym, magazynierem, handlowcem, radcą prawnym, informatykiem, gościem od rozliczeń produkcji itp.

    Poza tym mam zamiłowanie do matematyki i fizyki i wszelkich "zagwostek" oraz ciekawostek z tym związanych.

    No, wystarczy chyba już tej samoreklamy :) choć mam jeszcze parę innych zalet :).

    :) Niestety mam też wady. :)
  • Poziom 15  
    Super - powstawiałem wszystkie polecane przez Ciebie poprawki - i działa na razie dobrze. Faktyczne w wierszu 69 a także w innych były błędy.
    Dzięki także za wyczerpującą informację o sobie i swoich umiejętnościach...
    Tylko pozazdrościć. Ja także lubię rozwiązywać zagadki , chociaż makro w excelu jest moją słabostką. na razie tylko czytam na ten temat.
    Co do mojego programu księgowego mam jeszcze jedno usprawnienie - ale to może później.
  • Poziom 15  
    Witam Marka i nie tylko.
    Chciałbym zrobić dalsze usprawnienia programu , ale w tej materii nie mogę sobie dać rady , dlatego proszę o pomoc - sam spędziłem wiele czasu , ale nie mogę znaleźć w makro gdzie dokonać zmiany.
    Otóż normalnie w okienku gdzie wpisuję, na początku są puste rubryki ( numer i data ). Ponieważ kilka kolejnych wpisów ma ten sam numer i datę , chciałbym aby nie następowało kasowanie -( w wypadku konieczności zmiany -dokonam poprawki numeru lub daty).
    wyczyszczenie tych 2 okienek powinno nastąpić tylko jednorazowo po uruchomieniu programu !
  • Pomocny post
    Poziom 40  
    Witam

    Zrobiłem troszeczkę inaczej. Myślę że lepiej ale jeżeli nie będzie ci pasowało - nie ma sprawy - poprawie dokładnie tak jak chcesz.

    Po wciśnięciu OK w okienku pojawia się komunikat czy chcesz wprowadzić kolejny dokument.
    Jeżeli tak data i numer pozostaną, jeżeli nie zamknie się całe okienko i jego ponowne otwarcie (z "głównego" przycisku) otworzy "czyste" okienko.
  • Poziom 15  
    No powiem Ci super - jet lepiej niż zakładałem - i o to mi właśnie chodziło!!
    Mam jeszcze inne udogodnienia - ale nie chcę Ci na razie głowy zawracać.
    Np. wprowadzenie pliku dźwiękowego (instrukcja słowna) w kartę UWAGA.
    Biorę się zaraz do przekopiowania do mojego makra tego właściwego kawałka który stworzyłeś - wielkie dzięki !!
  • Poziom 40  
    Facetjanusz napisał:
    ... Mam jeszcze inne udogodnienia ... Np. wprowadzenie pliku dźwiękowego (instrukcja słowna) w kartę UWAGA...


    Do tego, jeżeli już, załóż oddzielny topik, bo to całkiem inne zagadnienie i przyznam, że nigdy się nie "bawiłem" multimediami wywoływanymi z excela.
  • Poziom 15  
    Ja mam niby uruchomienie pliku dźwiękowego - ale za nic nie dam rady podmienić swojego pliku dźwiękowego w miejsce standartowego lub proponowanego przez wykonawce tego makra pliku.

    Dodano po 1 [godziny] 28 [minuty]:

    Witam Marku
    Wracając do Twojej sugestii dodatkowego okienka - to w poprawionym przez Ciebie programie wszystko działa OK , ale wielokrotnie próbowałem wkleić do mojego programu kawałek z Twojego ,a w końcu całe makro i wszystko działa OK , tylko w jednym wypadku ( pozycja 1) leci taki komunikat i taki błąd jak dołączona kopia. I nie mogę sobie z trym poradzić.
    Pozdrawiam
  • Poziom 40  
    W twoim załączniku nic nie ma.
    Jak zaktualizujesz to możesz też załączyć te makro z multimediami
  • Pomocny post
    Poziom 40  
    Znalazłem "błąd".

    Ponieważ przykład z funduszem robiłem na liczbie całkowitej (555) zapomniałem/nie zwróciłem uwagi że liczba z przecinkiem dla VB jest z kropką. Później kod próbuje to dalej konwertować i występuje różnica typu.

    Wystarczy pobrać z funduszu remontowego tekst wartości [Text] a nie wartość [Value] i wszystko powinno być OK.

    Popraw w kodzie zmiany Combobox1:

    Nie zamykałem w kodzie aby było widać co jedynie trzeba zmienić:

    Private Sub ComboBox1_Change()
    With Okienko1
    If .ComboBox1.ListIndex = 0 Then
    .Hide
    Worksheets("DANE").CommandButton1.Visible = True
    Worksheets("DANE").CommandButton2.Visible = True
    Worksheets("DANE").Activate
    Worksheets("DANE").Range("D3").Select
    Else
    .TextBox4.Enabled = True
    .TextBox4.Value = "0,00"
    .TextBox5.Value = "0,00"
    .TextBox5.Visible = False
    .Label6.Visible = False
    End If

    If .ComboBox1.ListIndex = 5 Then
    .TextBox5.Value = Worksheets("SLOWNIK").Range("G4").Text
    .TextBox5.Visible = True
    .TextBox5.Enabled = False
    .Label6.Caption = " w tym Fundusz Remont. ZOSK"
    .Label6.Visible = True
    End If


    End With

    End Sub
  • Poziom 15  
    OK, dzięki Ci - jak tylko będę dysponował czasem to wstawię te poprawki , dzisiaj mam wyjazdy do lekarzy-( jestem chwilowo na wózku inwalidzkim ) , nie mniej aktywnie prowadzę Wspólnotę Mieszkaniową jako prezes - robię programy i rozliczam się z mieszkańcami i dysponuję kasą. Dla usprawnienia pracy ciągle zmieniam programy.
    Pozdrawiam