napisał: toczi1 postów: 75
umieszczony: 6 sierpnia 2016 10:49
|
|
Cytat:Cytat:
To z podbieraniem danych do arkusza i wydruk zrobiłem dobrze co nie?
Czy zakładasz, że użytkownik wybierze tylko jedną pozycję na liście?
Tak ponieważ arkusz będzie drukowany bezpośrednio po tym jak status juz będzie zamknięty i jest tylko jedna osoba która się tym zajmuje i będzie drukować po zakończeniu działań.
Zrobiłem tez tak że jak włączę obydwa pliki i żeby zegarki chodziły bo dawało błąd ale pozmieniałem nazwy zmiennych np zliczaj na licz i tam gdzie jeszcze wyskakiwal błąd to dałem ta komendę żeby ignorować błąd to co mu podałeś parę postów niżej. |
|
napisał: Trebor postów: 1209
umieszczony: 5 sierpnia 2016 17:58
|
|
Cytat:
To z podbieraniem danych do arkusza i wydruk zrobiłem dobrze co nie?
Czy zakładasz, że użytkownik wybierze tylko jedną pozycję na liście? |
|
napisał: toczi1 postów: 75
umieszczony: 3 sierpnia 2016 20:56
|
|
Cytat: Ponieważ brak było deklaracji czasu myślę, że excel mógł się włączać po zamknięciu aplikacji i upływie zadanego czasu.
W module1 jest procedura test, która pokazuje jak sprawdzić czy osoba znajduje się na liście. Wykorzystuje ona funkcję arkuszową Podaj pozycję.
Odliczanie czasu prześledź w załączniku. Obawiam się, że tłumaczenie tylko zagmatwa ideę działania.
Dopisywanie opinii zrobiłem na inputbox. Każda opinia powinna się zaczynać w komórce od nowej linii chr(10). Jeśli chcesz inaczej zmienimy, chociaż sposób dopisywania pozostanie ten sam.
Dzięki wielkie Trebor
Sprawdziłem wszystko i działa git przy blokowaniu osób zostanę przy tym sposobie co ja zrobiłem tez działa fajnie i się sprawdza to co chciałem żeby robiło a ze dużo kodu jest to nie szkodzi .
Teraz sobie podstawie dodawanie opinii do innych przycisków i zegarek tez wstawię do pliku z AZUP i dodawanie opinii też.
To z podbieraniem danych do arkusza i wydruk zrobiłem dobrze co nie?
Jeszcze raz wielkie dzięki. |
|
napisał: Trebor postów: 1209
umieszczony: 3 sierpnia 2016 17:41
|
|
Ponieważ brak było deklaracji czasu myślę, że excel mógł się włączać po zamknięciu aplikacji i upływie zadanego czasu.
W module1 jest procedura test, która pokazuje jak sprawdzić czy osoba znajduje się na liście. Wykorzystuje ona funkcję arkuszową Podaj pozycję.
Odliczanie czasu prześledź w załączniku. Obawiam się, że tłumaczenie tylko zagmatwa ideę działania.
Dopisywanie opinii zrobiłem na inputbox. Każda opinia powinna się zaczynać w komórce od nowej linii chr(10). Jeśli chcesz inaczej zmienimy, chociaż sposób dopisywania pozostanie ten sam. |
|
napisał: toczi1 postów: 75
umieszczony: 3 sierpnia 2016 10:40
|
|
Witam Trebor
Sorki ze pisze nowy post skoro nie odpisałeś na tamten
Zrobiłem już cześć rzeczy z tamtego posta czyli punkty:
1. wyłączanie po 20 minutach
2. LINKI tez powstawiałem
4. blokowanie podjęcia decyzji prze określone osoby. Popatrz jak to rozwiązałem w userform2. Działa dobrze.
Prosił bym tylko o:
1. wstawienie zegarka odliczającego pozostały czas do zamknięcia pliku w komórce no A1
2. I opcje wstawianie "OPINI" (USEFORM1) żeby nie nadpisywało tych już wpisanych tylko dodawało do tego co już jest albo jeśli wciśniesz dodaj wyskoczy okno z już wpisanymi danymi i tylko dopisujesz resztę i zatwierdzasz . Bo narazie to działa na inputboxie i nadpisuje. A do reszty DECYZJA KJ i PRZYCZYNA NIEZGODNOŚCI to już bym sobie podstawił |
|
napisał: toczi1 postów: 75
umieszczony: 1 sierpnia 2016 21:00
edytowany: 2 sierpnia 2016 10:21
|
|
Chodzi o ten plik:
1. zamykanie po bezczynności 15 minut (tutaj akurat kodu nie ma wpisanego ) Prosił bym jeszcze o to aby w komórce A1 odliczało czas jaki pozostał do zamkniecia pliku po jego otworzeniu
2. Wstawienie linku do któregoś z przycisków żeby wyświetlało link resztę sobie podmienię
3. można by było tak zrobić ale tedy bym musiał zamienić inputboxa na userform jako textbox tak ? i cos takiego :
End If
UserForm6.Label1 = & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 14) & " "
UserForm6.Show
Bo chodzi o to ze jeśli będzie ktoś chciał dodać opinie do tej co już wpisał to żeby nie osunęło wcześniejszej
4. Jest możliwość żeby przycisk "decyzja wydziałowej kj" mogły tylko użyć osoby podane w arkuszu 2: Np ze jestem zalogowany jako: Mkowalski (Enviroment("Username") i jeśli ta nazwa znajduje się w arkuszu 2 w kolumnie np C to wtedy mogę zamknąć AZUP.
Zrobiłem tez żeby nie można było powtórnie dodać decyzji wydziałowej KJ i dodać opini jeśli już jest status zamknięty. I dałem na końcu EXIT SUB czy będzie lepiej jak dam END FUNCTION ?
Prosił bym jeszcze o to aby w komórce A1 odliczało czas pozostały do zamknięcia pliku |
|
napisał: Trebor postów: 1209
umieszczony: 1 sierpnia 2016 18:16
|
|
Daj załącznik na którym pracujesz - to bardzo ułatwia pomoc.
1. Należy zastosować choćby najprostszą obsługę błędówon error resume next
'kod sprawiający problem
on error goto 0
2. Spróbuj:body = file://H:\makra\Baza AZUP\Baza_AZUP_QP_8_ver.1.xlsm
3. Najlepiej wpakować do pola, w którym wpisujesz tekst, to co już do tej pory było w komórce. Wtedy masz możliwość zmienić stary tekst i dopisać nowy.
4. Nie powinno być z tym problemu, jednak bez załącznika będzie mi ciężko. |
|
napisał: Trebor postów: 1209
umieszczony: 30 lipca 2016 07:29
edytowany: 30 lipca 2016 07:40
|
|
Napisałem coś tam w starym skoroszycie. Do testów powinno wystarczyć. |
|
napisał: toczi1 postów: 75
umieszczony: 29 lipca 2016 19:38
|
|
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 10).Copy Destination:=Sheets("Arkusz_2").Range("C6") To dziala ok kopiuje 10 kolumne z arkusza baza azup z wyszuaknego wiersza w listboxie i kopiuje do arkusza 2 do komorki C6 sprawdzalem i dziala fajnie.
Co do stworzenia user forma zamiast inputboxa to nie wiem jak go potem podpiac wto miejsce inputboxa zeby tez sie pojawialoi wtedy zeby wybrac z listy tak jak pisales.jak sie nie da to bede wpisywal recznie. To dzialanie jest w przycisku Dodaj działania korygujace
A co do zamykania to pod kazdy przycisk zrobilem ze jesli osoba zakonczy np dodawanie azup to wysle email zapisze plik i go automatycznie zamknie tak zrobilem pod kazdy przycisk zeby nie bylo ze ktos cos wpisze lub doda a potem nie zamknie to zamyka automatycznie.
A chcialbym ze jesli otworzy plik i nic na nim nie robi przez np 15 minut wtedy zamyka nawet bez opcji zapisania bo wtedy nie wykonuje zadnego dzialania na przyciskach. Tez mi napisz gdzie mam to wkleic ten kod zeby dzialal pod plika nie pod przycisk.
Sory za pisownie bez polskich znaków
Pozdrawiam i bardzo dużo sie nauczyłem dzięki Tobie |
|
napisał: Trebor postów: 1209
umieszczony: 29 lipca 2016 16:00
edytowany: 29 lipca 2016 16:01
|
|
Cytat:
Microsoft Outlook 2010
Przykłady wysyłania maili znajdziesz tu: http://www.rondebruin.nl/win/s1/outlook/mail.htm Rozumiem, że to wyższa półka. Jeśli zbyt wysoka daj znać.
Cytat:Takie pytanko ten kod do kopiowania z list boxa do nowego arkusza w jakieś tam pole jest poprawny :
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 10).Copy Destination:=Sheets("Arkusz_2").Range("C6")
Linia kopiuje komórkę z arkusza Baza AZUP do arkusza _2 wykorzystując do określenia wiersza kopiowania informacje zapisane w trzeciej kolumnie listboxa w wierszu określonym przez zmienną i.
Cytat:I jest możliwe ze np mam taki kod - Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 10) = InputBox("Imie") - można zrobić tak żeby inputbox był z listy rozwijalnej czy jest inna komenda. Nie znam takiej możliwości. Pozostaje zbudować UserForm z comboboxem lub listą.
Cytat:Jest jakaś komenda do wpisania w plik excel ze jeśli ktoś otworzy plik i np. nie będzie go używał to żeby po 15 minutach zamknęło ten plik excel bo jeśli kilka osób będzie z tego pliku korzystać i ktoś sobie otworzy to kolejna osoba nie doda nowego AZUP. Czy tylko zostaje opcja ze wyświetli przy otwarciu kto blokuje i dzwonisz do tej osoby żeby odblokowała .
Zrobiłem tylko ze jeśli ktoś doda nowy AZUP to wyśle email i potem zapisuje plik i go zamyka z automatu.
Jest taka możliwość, spróbuję coś takiego napisać jutro rano. Zakładam, że plik przed zamknięciem należy zapisać. |
|
napisał: Trebor postów: 1209
umieszczony: 28 lipca 2016 15:36
|
|
Który Outlook, office? |
|
napisał: Trebor postów: 1209
umieszczony: 27 lipca 2016 15:31
|
|
Jaki masz program pocztowy? Dla mnie jeszcze prościej jak podasz za pomocą jakiej sekwencji klawiszy można wysłać napisaną wiadomość. |
|
napisał: toczi1 postów: 75
umieszczony: 26 lipca 2016 19:23
edytowany: 26 lipca 2016 20:29
|
|
Zrobiłem już, trochę pogłówkowałem, może coś ze mnie będzie
A pytanie jeśli mnie sekwencja jest ctrl+enter to ma to wyglądać tak
Application.SendKeys "Ctrl+enter" bo jak tak dałem to mi dało to do nadawcy a jak miałem tak : Application.SendKeys "^~" to się zapytało czy zapisać konfiguracje przycisków wysyłania |
|
napisał: toczi1 postów: 75
umieszczony: 26 lipca 2016 18:40
|
|
Zrobiłem tak ale nie wrzuca mi w 12 kolumnę wartości w toku działania w kolumnę 10 wrzuca i nie rusza wysyłanie wiadomosci email i tak samo nie wrzuca wartosci zamkniete co jest nie tak wrzucał cały kod:
Private Sub CommandButton1_Click()
Dim i As Long, ostatni As Long, TekstSzukany
If TextBox1.Text = "" Then MsgBox "Wpisz tekst do wyszukania.": TextBox1.SetFocus: Exit Sub
TekstSzukany = UCase(TextBox1.Text)
ListBox1.Clear
'===========================================================================
With Sheets("BAZA_AZUP")
ostatni = .Columns("A:B").Find(What:="*", After:=.Cells(1, 1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For i = 2 To ostatni
If .Rows(i).Hidden = False Then
If UCase(.Cells(i, 1)) = TekstSzukany Or UCase(.Cells(i, 2)) = TekstSzukany Then
ListBox1.AddItem .Cells(i, 1)
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(i, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = i
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(i, 12)
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(i, 12).Parent.Name
End If
End If
Next i
End With
End Sub
Private Sub CommandButton2_Click()
Dim i As Long, ostatni As Long
If ListBox1.ListCount = -1 Then MsgBox "Brak listy materiałów.": Exit Sub
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(i) Then
If ListBox1.List(i, 2) = "W toku" Then
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 12) = "W toku"
End If
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 10) = InputBox("Wpisz działania korygujące")
End If
If UCase(ListBox1.List(i, 3)) = "Zamknięte" Then
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 12) = "Zamknięte"
Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 11) = Date
ActiveWorkbook.FollowHyperlink "mailto:" & Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 5) & ";" & Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 8) & "?subject=AZUP" & "&" & "body=" & "dodano nowe AZUP o numerze " & Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 2) & " Status AZUP " & Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 12) & " Prosze o uzupełnienie działań korygujących "
Application.Wait (Now + TimeValue("0:00:03"))
Application.SendKeys "Ctrl+Enter" 'skrót klawiaturowy w Twoim programie pocztowym
End If
Next i
Unload Me
End Sub |
|
napisał: Trebor postów: 1209
umieszczony: 26 lipca 2016 15:59
|
|
Obecnie masz między innymi taką linię Sheets("Baza_AZUP").Cells(ostatni, 12) = "W toku" gdzie w zmiennej ostatni masz zapisany pierwszy wolny wiersz po ostatnim zapisanym. Twoim zadaniem jest zapisać zmiany w wierszu, w którym zostały wyszukane dane. Informacja o wierszu masz zapisaną w trzeciej kolumnie listboxa (licząc od 0 jest to kolumna z indeksem 2). Dane o wierszu możesz odczytać w poniższy sposób:ListBox1.List(i, 2) a cały zapis może mieć postać:Sheets("Baza_AZUP").Cells(ListBox1.List(i, 2), 12) = "W toku" przy zapisie w kolumnie 12. Podobnie zapisujesz pozostałe informacje.
Automatyczne wysyłanie maili pokazałem już w pliku. Twoim zadaniem jest wyszukanie informacji jaki skrót klawiaturowy wysyła w Twoim programie pocztowym. Dla TB jest to Ctrl + EnterApplication.Wait (Now + TimeValue("0:00:03"))
Application.SendKeys "^~"
Pierwsza linia powyższego kodu ma za zadanie zatrzymać na 3 sekundy dalsze wykonywanie kodu, aby system zdołał w tym czasie przygotować wysyłkę. Czas dobierz doświadczalnie. SendKeys symuluje wciśnięcie odpowiedniej sekwencji klawiszy. W moim przypadku jest Ctrl+enter. |
|
napisał: toczi1 postów: 75
umieszczony: 25 lipca 2016 21:14
|
|
Cytat:Nowe i nie tylko dopisałem. Powtórzone instrukcje z poprzednich makr powinieneś dostosować już sam.
Nie za bardzo ogarniam coś tam próbuje ale dodaje mi to w nowym pustym wierszu a nie w tym co wyszukam w listboxie.
Mógłbyś mi to zakodować prosił bym bardzo.
Bo jak wyszukam nr azup w listboxie np wiersz 2 to chciałbym ze jesli zmienię status na W toku i dam dodaj działania to żeby wyskakiwało okno dodaj działania korygujące żeby w nim wpisać jakieś tam dodałem i żeby to dodało w tym wyszukanym numerze azup czyli np. 2 wiersz razem ze zmiana statusu na końcu.
Tak samo jeśli zmienię status na zamknięte przyciskiem to żeby w tym wyszukanym się zmieniał status na zamknięte i żeby dodało datę zakończenia automatycznie z systemu.
I po tych dwóch poleceniach żeby tez wysyłało email do osób które sa wpisane w kolumnie E i H w wyszukanym azup w list boxie.
Bardzo bym prosił o pomoc |
|
napisał: Trebor postów: 1209
umieszczony: 25 lipca 2016 17:24
|
|
Nowe i nie tylko dopisałem. Powtórzone instrukcje z poprzednich makr powinieneś dostosować już sam. |
|
wszystkich stron: 4
|
|