Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70555 Skopiuj do schowka User form - ulepszenia
Autor Wiadomość
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 08:47   User form - ulepszenia

Dzień dobry,
Na potrzeby usprawnienia sobie pracy stworzyłem z pomocą forumowiczów i yt stworzyłem sobie mały userform (plik w załączniku).
Póki co na moje potrzeby wystarcza, ale chciałbym go ciągle ulepszać aby automatyzować swoją pracę.
Zaznaczę od razu, że jestem bardzo początkującym użytkownikiem.

Aktualnie założenie jest takie, że tworzę zlecenie i mogę aktualizować dane założonych, mogę też wyszukiwać zlecenia i je edytować.
Dodatkowo makro, które napisał jeden z użytkowników forum pozwala mi "zaplanować transport" i archiwizować zlecenia, które już wyjechały.

Chciałbym usunąć pola txtbox klient, opiekun, konstruktor i zastąpić je comboboxami.
Jeżeli chodzi o opcję do wyboru w listach klient i opiekun będzie ich niewiele (maksymalnie 6) i będę w stanie sam to zrobić , to już w przypadku listy klientów jest ich co najmniej 400, i potrzebny by był tutaj combobox z podpowiedziami (na zasadzie: zaczynam wpisywać nazwę klienta i lista coraz bardziej się zawęża).
Przeszukałem forum i chyba znalazłem rozwiązanie (http://www.excelforum.pl/topics3/autouzupelnienie-listy-na-formatkach-vt2962.htm?highlight=zaw%EA%BFana) ale nie potrafię przerobić sposobu użytkownika Trebor tak aby działał w moim userform.

Nazwa klienta powinna być wyszukiwana w kolumnie A w arkuszu Dane.


Drugim usprawnieniem, które chciałbym wprowadzić to komunikat, ostrzegający o tym, że dostawa od któregokolwiek z dostawców jest później niż data planowanej wysyłki.

Daty dostaw znajdują się w kolumnach W-AD.

Datę transportu aktualnie planuję poprzez filtrowanie kolumny AI.
Data transportu jest uzależniona od rodzaju zlecenia jakie mamy wykonać.

Wydaje mi się, że najprostszym aktualnie rozwiązaniem byłoby to, że jeżeli data wysyłki w kolumnie AI jest wcześniejsza, niż którakolwiek z dat dostawy materiału w kolumnach W-AD tego samego wiersza, to excel wypełni cały wiersz na czerwono.

Przyszłościowo będzie to pewnie komunikat MsgBox, wyskakujący podczas Planowania transportu, ale póki co to o wiele za wysokie progi jak dla mnie.

arkusz testowy_1_2021_03_31.xlsm
Pobierz Plik ściągnięto 7 raz(y) 250.16 KB

ID posta: 403002 Skopiuj do schowka
 
 
Tadek
Excel Expert


Wersja: Win Office 2007
Pomógł: 1985 razy
Posty: 5662
Wysłany: 31-03-2021, 09:01   

Cytat:
Chciałbym usunąć pola txtbox klient, opiekun, konstruktor i zastąpić je comboboxami.
Jeżeli chodzi o opcję do wyboru w listach klient i opiekun będzie ich niewiele (maksymalnie 6) i będę w stanie sam to zrobić , to już w przypadku listy klientów jest ich co najmniej 400
W załączonym pliku brak tych danych.
Wstaw po kilkanaście przykładowych tych danych: klient, opiekun, konstruktor
ID posta: 403003 Skopiuj do schowka
 
 
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 09:12   

Jeżeli chodzi o opcję do wyboru w przypadku pola :
konstruktor - będzie to: Maciek, Daniel, Wojtek, Kamil, Piotr,
opiekun - będzie to : Marcin, Grzegorz, Miłosz, Kazimierz
Klient - tutaj lista będzie miała około 300 pozycji, i będą to nazwy firmy np:
SAS EFFIBAT
Faber GMBH
PZU Sp. z o.o itd itd
ID posta: 403004 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4544
Wysłany: 31-03-2021, 12:36   Re: User form - ulepszenia

janosiknh napisał/a:

Chciałbym usunąć pola txtbox klient, opiekun, konstruktor i zastąpić je comboboxami.
Nazwa klienta powinna być wyszukiwana w kolumnie A w arkuszu Dane.

Połóż na Form ComboBox i zmień nazwę na cbKlient -> w module frmForm pod linią Option Explicit dodaj kod
Kod:

Private klienci()

Private Sub UserForm_Initialize()
Dim lastRow As Long
'    ładowanie Klientów.
    With ThisWorkbook.Worksheets("Dane")
        lastRow = .Cells(Rows.count, "A").End(xlUp).Row
        If lastRow > 1 Then
            If lastRow = 2 Then
                ReDim klienci(1 To 1, 1 To 1)
                klienci(1, 1) = .Range("A2").Value
            Else
                klienci = .Range("A2:A" & lastRow).Value
            End If
            cbKlient.MatchEntry = fmMatchEntryNone
            cbKlient.List = klienci
        End If
    End With
'    Ładowanie Opiekun, Konstruktor -> sam zrobisz bo nikt nie wie skąd ładować. Na przyszłość podaj dane w arkuszach.
End Sub

Private Sub cbKlient_Change()
Dim r As Long, count As Long, klient As String, lista()
    If Len(cbKlient.Tag) Or cbKlient.ListIndex > -1 Then Exit Sub
    cbKlient.Tag = "x"
   
    If IsEmpty(cbKlient.Value) Then
        cbKlient.List = klienci
        cbKlient.ListIndex = -1
    Else
        klient = cbKlient.Value
        cbKlient.Clear
        For r = 1 To UBound(klienci)
            If InStr(1, klienci(r, 1), klient, vbTextCompare) = 1 Then
                count = count + 1
                ReDim Preserve lista(1 To 1, 1 To count)
                lista(1, count) = klienci(r, 1)
            End If
        Next r
        If count Then
            cbKlient.Column = lista
'            cbKlient.DropDown
        End If
    End If
    cbKlient.Tag = Empty
End Sub

Cytat:

Wydaje mi się, że najprostszym aktualnie rozwiązaniem byłoby to, że jeżeli data wysyłki w kolumnie AI jest wcześniejsza, niż którakolwiek z dat dostawy materiału w kolumnach W-AD tego samego wiersza, to excel wypełni cały wiersz na czerwono.

Chyba chodzi o AJ a nie o AI.

Wybierz dane w kolumnie AJ, np. AJ3:AJ100 -> Conditioal Formating -> new Rule -> "Use a formula ..." -> formuła
Kod:

=AJ3<MIN($W3:$AD3)

-> Format -> Fill -> wybierz kolor czerwony -> OK -> OK -OK
[/quote]
ID posta: 403010 Skopiuj do schowka
 
 
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 13:16   Re: User form - ulepszenia

Dziękuję za pomoc.
wkleiłem to jak pisałeś, po uruchomieniu nazwy klientów znajdują się na liście, ale przy próbie wpisania czegokolwiek wyskakuję błąd:

Compile error:
Variable not defined

excel podkreśla na żółto linię: Private Sub cbKlient_Change()
ID posta: 403012 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 797 razy
Posty: 4311
Wysłany: 31-03-2021, 13:42   

Info mało precyzyjne. Deweloper > Visual Basic > znajdź swój kod > uruchom (F5) > zobacz na jakiej linii stanął > skopiuj tą linię > wklej (albo SS).
.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 403013 Skopiuj do schowka
 
 
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 13:46   

Kod stanął na linii


cbKlient.List = klienci
ID posta: 403014 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4544
Wysłany: 31-03-2021, 13:56   

janosiknh napisał/a:
Kod stanął na linii


cbKlient.List = klienci

Załącz skoroszyt. Nie będę zgadywał.
ID posta: 403015 Skopiuj do schowka
 
 
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 14:02   

skoroszyt w załączniku

arkusz testowy_1_2021_03_31.xlsm
Pobierz Plik ściągnięto 6 raz(y) 257.88 KB

ID posta: 403018 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4544
Wysłany: 31-03-2021, 14:20   

Napisałem:
Cytat:

Połóż na Form ComboBox i zmień nazwę na cbKlient -> w module frmForm pod linią Option Explicit dodaj kod

Private klienci()
...

Gdzie masz Private klienci()???
------------
Wywal z module frmForm
Kod:

Sub UruchomFrmForm()
    frmForm.Show
End Sub
ID posta: 403020 Skopiuj do schowka
 
 
janosiknh 
Starszy Forumowicz


Wersja: Win Office 2010
Posty: 27
Wysłany: 31-03-2021, 14:27   

Masz rację.
W głównym pliku, w którym testowałem działanie na liście klientów, ta linijka wkleiła się poniżej Sub UruchomFrmForm().
Po przeniesieniu jej bezpośrednio pod Option Explicit wszystko działa jak należy.

Dziękuję bardzo za pomoc.
ID posta: 403021 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe