Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

excel vba - komunikat o nie wypełnieniu komórki jeżeli warunek

projectorEL 30 Aug 2014 00:38 7320 11
  • #1
    projectorEL
    Level 10  
    Witam, ponownie proszę o korektę kodu i tym samym pomoc w rozwiązaniu kwestii wymuszenia wypełnienia komórki, jeżeli wiersz został rozpoczęty...

    Poniższy kod działa w sposób: sprawdź czy K jest coś jak jest to możesz zamknąć.

    A potrzebuje :
    sprawdź czy w komórce K coś jest jeżeli tak to zamknij , ale jeżeli nic niema a
    w komórce A w danym wierszu jest więcej niż 0 "zero" to = MsgBox Komórka K musi być ...

    Quote:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    '
    ' If Len(Range("K1")) < 4 Then
    ' MsgBox "Komórka K musi być wypełniona przed zamknięciem dokumentu!"
    ' Cancel = True
    'Else
    ' MsgBox "OK, komórka K wygląda na poprawnie wypełnioną :)"
    ' Me.Save
    'End If
    'End Sub


    jak to rozwiązać ;/ ?
  • Helpful post
    #2
    PRL
    Level 40  
    Code: vb
    Log in, to see the code
  • #3
    projectorEL
    Level 10  
    witam dziękuję, sprawdze po powrocie do domu, ale czy to działa niezależnie dla każdego wiersza w dol? o taki rozwiązanie mi chodzi... pE
  • #4
    Maciej Gonet
    VBA, Excel specialist
    Kolego PRL,
    Twój kod nie wygląda za bardzo logicznie, chociaż formalnie jest OK.
    Drugi wariant warunku wystąpi gdy obie komórki w kol. A i K są puste, więc komunikat zamiast:
    Code: vb
    Log in, to see the code
    powinien raczej brzmieć:
    Code: vb
    Log in, to see the code

    Pozdrowienia
  • #5
    PRL
    Level 40  
    Masz rację Maciek. Niech sobie takie duperele autor sam zmieni.:)

    A do Autora: chcesz sprawdzać komórki w dół.
    A co w przypadku, gdy tych spełniających warunek komórek będzie 100?
    Użytkownik ma 100 klikać 'ok'?
  • #6
    projectorEL
    Level 10  
    witam,
    chodzi o to aby dla każdego kolejnego wiersza zawsze komórka K była wypełniona , jeżeli dane w danym wierszy zostaną wpisane to w wierszu "x" w kolumnie K musi tez być wpis. Jeżeli dany user wpisze np 20 wierszy to w kolumnie K tez 20 x musi być jakiś wpis, jeżeli nie to brak możliwosci zapisu...


    Quote:
    A co w przypadku, gdy tych spełniających warunek komórek będzie 100?
    Użytkownik ma 100 klikać 'ok'?


    najlepiej byłoby kliknąć tylko raz "ok" ...


    makro ma być zastosowane w pliku który jest listą zleconych prac i w tym zakresie nie będzie już edytowany, obok zostanie wpisane kiedy zostanie wykonane, a na bieżąco będą dopisywane kolejne wiersze około 3000 w ciągu roku.


    Pytanie jak dostosować makro aby zmienic zakres dla większej ilości wierszy?


    czy ktoś życzliwy mógłby podpowiedzieć coś co mogło by mi pomóc ruszyć z tematem dalej?
  • #7
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Proszę spróbować zastosować takie makro:
    Code: vb
    Log in, to see the code


    Opiera się ono na następujących założeniach:
    1) Działa tylko w aktywnym arkuszu, to znaczy, że jeśli ktoś zmieni arkusz np. na pusty, to może zamknąć skoroszyt, mimo iż jest niekompletny. Z kolei po zmianie arkusza aktywnego będzie oczekiwać podobnej zawartości.
    2) Procedura działa przy zamykaniu skoroszytu i jeśli aktywny arkusz jest kompletny zapisuje skoroszyt automatycznie, a jeśli nie jest kompletny, wyświetla komunikat i nie pozwala zamknąć arkusza. Procedura nie zabrania zapisu niekompletnego arkusza poleceniem Zapisz lub Zapisz jako.
    3) Przy stwierdzeniu braku wpisu w kolumnie K kursor ustawia się w tej komórce i wyświetlany jest komunikat. Za każdym razem wyświetlany jest komunikat dotyczący pierwszej niekompletnej komórki. Jeśli jest więcej braków, przy ponownej próbie zamknięcia pojawi się następny komunikat.
    4) Zakładam, że przynajmniej jedna komórka w kolumnie "A" będzie wypełniona.

    Proszę sprawdzić, czy to odpowiada Pana potrzebom. Zagadnienie nie było dokładnie opisane, więc być może szczegóły trzeba będzie poprawić.
    Pozdrowienia
  • #8
    projectorEL
    Level 10  
    hehe działa właściwie serdecznie dziękuje.

    najbardziej zależało mi na tym co już działa, ale jeszcze zapytam, aby rozszerzyć zakres kolumn do nadzoru o "H","I","J" to wiele roboty jest do zmiany kodu vba?
    jak by to mogło wyglądać choćby dla jednej dodatkowej kolumny?

    jeszcze raz dziękuje
    pE
  • #9
    Maciej Gonet
    VBA, Excel specialist
    Dobry wieczór,
    Ale jak to miałoby działać? W danym wierszu musiałyby być wypełnione wszystkie komórki z kolumn H, I, J, K, czy którakolwiek z nich, czy chodzi o kody niezależnie sprawdzające każdą z wymienionych kolumn?
    Proszę to doprecyzować.
    Pozdrowienia
  • #10
    projectorEL
    Level 10  
    Dobry wieczór
    Miałem na myśli aby wszystkie cztery komórki H I J K w danym wierszu miałyby być wypełnione - co dawałoby rezultat zgoda na zamknięcie pliku.
    Komunikat mógłby być konkretny gdzie jest puste, ale nie koniecznie, nie upieram się przy tym :)


    dane od A:K wypełnia zgłaszający:
    są to dane typu: ... "jaki dział", "na kiedy", "kontakt", "jaki user"

    pozdrawiam
    pE
  • Helpful post
    #11
    Maciej Gonet
    VBA, Excel specialist
    Zmodyfikowana wersja makra:
    Code: vb
    Log in, to see the code


    Działa podobnie jak poprzednia, sprawdzając kolumny H do K.
    Pozdrowienia
  • #12
    projectorEL
    Level 10  
    Suuuuuuuuuuuuuuuuper działa !
    dziękuje !
    Pozdrawiam serdecznie pE