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.

Excel- Szychtownica- minimalizacja kodów

29 Lis 2014 15:45 3723 56
  • Poziom 23  
    Witam wszystkich. Właśnie pracuję nad nową wersją mojej szychtownicy. Jednak jak zwykle w moim przypadku mam problem ze zminimalizowaniem moich kodów. Napisałem parę kodów, ale są bardzo długie. Bardzo proszę kogoś o pomoc w zminimalizowaniu kodu:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Specjalista - VBA, Excel
    Witaj
    A1...A30, ......G1...G30 co to jest? Objekty? (TextBox, Combo, Button, UserForm) ?
  • Poziom 23  
    Wszystko jest w oknie UserForms: A1-A31, B1-B31 to są TextBox-y, a C1-C31, D1-D31 i G1-G31 to są Label
  • Pomocny post
    Specjalista - VBA, Excel
    Sprobuj
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Dzięki bardzo, działa rewelacyjnie. Mam jeszcze taki kod jak poniżej. Jak można by go zminimalizować?
    'A1-A31' to TextBox, 'txtMiesiac' to ComboBox a 'lstPracownicy' to ListBox

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    Specjalista - VBA, Excel
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Dzięki wielkie, działa wyśmienicie
  • Poziom 23  
    Witam ponownie. Mam tym razem prośbę o rozbudowę możliwości kodu. Poniższym kodem do okien Label (G1-G31) wklejam grafik jaki jest wyświetlony w oknie 'labGrafik'. Wszystko jest ok, kod działa dobrze jednak problem jest w tym że grafik jest stworzony dla różnych oddziałów, miedzy innymi dla : "Przypravy, Rubani, R-R' i jeśli będzie potrzeba to dodam inne lub rozszerzę aktualne. Poniższy kod wyświetla grafik od A-F, ale różne oddziały mają takie same symbole i tu jest problem. Potrzebuję aby kod wybrał odpowiedni symbol dla odpowiedniego oddziału. Jak to zrobić?

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Oddziały wybieram w oknie 'labGrafik1' a symbol w 'labGrafk' jak widać na poniższym screenie:
    Excel- Szychtownica- minimalizacja kodów

    ...a tak wygląda grafik w arkuszu:

    Excel- Szychtownica- minimalizacja kodów

    Wiem że najprościej było by dla każdego grafiku dać inny symbol ale nie mogę tego zrobić, symbole muszą się powtarzać dla różnych oddziałów. Jak to zrobić aby okno wybrało mi odpowiedni grafik?
  • Specjalista - VBA, Excel
    Witaj
    Jeśli program ma zmienne z nazwy 'lab', 'lab1' tutaj wymienić na inne
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Niestety kod nie działa. Może źle wyjaśniłem co chcę osiągnąć. Ogólnie to poniższy kod działa poprawnie. Wkleja mi grafik z symbolem jaki jest wyświetlony w oknie ComboBox (o nazwie "labGrafik"). Jednak w kolumnie "DQ" są np. dwa grafiki o symbolu "A" i wklejany jest ten pierwszy od góry, dlatego dodałem kolumnę "DP" w której wpisałem grupy, i te grupy są wyświetlone w oknie ComboBox (o nazwie "labGrafik1") i teraz poniższy kod musi w pierwszej kolejności wybrać odpowiednią grupę a potem odpowiedni symbol jakie są wyświetlane w oknie: "labGrafik1" i "labGrafik"

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Specjalista - VBA, Excel
    Trudne bez przykładowego pliku

    Dodano po 5 [minuty]:

    sprobuj zamienic
    Code:

    Set lab1 = Sheets(txtMiesiac.Value).Range("DP:DP").Cells
    Set lab = Sheets(txtMiesiac.Value).Range("DQ:DQ").Cells

    w kolumnie DQ zawsze musi być ostatnią wartość '-', bez względu na to, czy grupa
  • Poziom 23  
    Dla przykładu wklejam plik. Kod po części działa. Jednak nie działa na grupie "R-P" i jak chcę wprowadzić jakiegoś pracownika to wyskakuje błąd, na moim poprzednik kodzie błąd nie wyskakiwał
  • Pomocny post
    Specjalista - VBA, Excel
    Kod uproszczony.
    Poniżej wszystkiech A, B, C,... w kolumnie DQ więcej umieścić "-" - koniec dane.
    W dodatku wyskakuje błąd, jeśli Wybierzesz z listy np. Przypravy E lub F

    Dodano po 1 [minuty]:

    JRV napisał:
    w kolumnie DQ zawsze musi być ostatnią wartość '-', bez względu na to, czy grupa

    lub zamienic
    While lab(rowStop + 1) <> "-" And lab(rowStop + 1) <> Empty
    rowStop = rowStop + 1
    Wend
  • Poziom 23  
    Teraz musiałem żonę puścić na komputer i jestem na fonie. Potem to sprawdzę. A jeśli chodzi o to że grupa Przyprawy ma mniej symboli od Rubami to druga kwestia i musiał bym to jakoś rozwiązać aby nie było możliwości wyboru innych symboli jak tylko takich jakie ma dana grupa, ale o ty pomyślę jak to rozwiązać.
  • Specjalista - VBA, Excel
    Dla labGrafik1_Change() przetwarzania moj makra tak, ze
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Ok, teraz działa poprawnie, ale jak rozwiązać błąd kiedy z listy chcę wybrać pracownika? Po kliknięciu na pracownika wyskakuje błąd w tej linijce:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Specjalista - VBA, Excel
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    wtedy
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Dzięki wielkie, rewelacja :)
  • Specjalista - VBA, Excel
    JaroFon napisał:
    Po kliknięciu na pracownika wyskakuje błąd w tej linijce:


    Kod Visual Basic - [rozwiń]rowStart = rowStop

    List2 - Przypravy
    12 - Przyprawy
  • Poziom 23  
    Już to zauważyłem i poprawiłem.
  • Poziom 23  
    Mam kolejne pytanie związane z moją szychtownicą. Potrzebuję aby szybko wprowadzać dniówki pracownikom dzień po dniu. Czy można zrobić coś takiego (jeśli tak to w jaki sposób) aby po wprowadzeniu dniówki do okna TextBox i kliknięciu na ENTER przeskoczyło mi automatycznie na kolejnego pracownika? Coś w stylu jak pokazałem na screenie?

    Excel- Szychtownica- minimalizacja kodów
  • Poziom 34  
    zobacz taki myk

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    gdzie textbox1 to twój textbox i listbox to samo
  • Specjalista - VBA, Excel
    te godziny i nadgodin numery mogą być dwie cyfry (np. 12) lub jest zawsze jedna cyfra?

    Dodano po 3 [minuty]:

    Można użyć zdarzenia Private Sub A1(A31...B31)_Change, ale jeśli dwa numery, a następnie dwa wydarzenia i będzie zrekompensowane 2 pozycje

    Dodano po 29 [minuty]:

    Sprobuj
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Tak, w jednym polu TextBox mogą być wpisywane symbole np. 1; P; P1; 5,5. Wszystkie dniówki zawsze będę wprowadzał z okna UserForm wiec kod musi działać w TextBox-ach
  • Poziom 23  
    JRV napisał:
    te godziny i nadgodin numery mogą być dwie cyfry (np. 12) lub jest zawsze jedna cyfra?

    Dodano po 3 [minuty]:

    Można użyć zdarzenia Private Sub A1(A31...B31)_Change, ale jeśli dwa numery, a następnie dwa wydarzenia i będzie zrekompensowane 2 pozycje

    Dodano po 29 [minuty]:

    Sprobuj
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    W żaden sposób nie potrafię zastosować Twojego kodu, kod nic kompletnie nie robi
  • Specjalista - VBA, Excel
    Jeśli dniówki z jednego znaku, działa na przykład, że mam
  • Poziom 23  
    Ja tego jakoś nie potrafię ruszyć. Zrobiłem coś takiego:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    ...działa, ale po wprowadzeniu jednego znaku. Teraz musiałbym wymyślić coś aby można wprowadzać symbole które mają więcej jak jeden znak.
    Zastanawiam się nad tym aby do okna UserForm dodać okna Label z symbolami które mają więcej jak jeden znak i po kliknięciu na odpowiedni symbol wprowadzały by się do okna TextBox które jest aktywne (SetFocus)

    Excel- Szychtownica- minimalizacja kodów
  • Poziom 34  
    zmień na\
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Specjalista - VBA, Excel
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Dodano po 3 [minuty]:

    clubs napisał:
    Private Sub A1_Exit

    Jeśli po prostu przenosi wskaźnik przez okno, a następnie pracować