vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest piątek, 17 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Pomoc w napisaniu makro


otwartyotwarty rozpoczął: toczi1 postów: 64



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

  
nazwa pliku rozmiar
Baza_AN_1.xlsm 120.86 kB

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

  
nazwa pliku rozmiar
Baza_AN_1.xlsm 140.37 kB

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

  
nazwa pliku rozmiar
Baza_AN.xlsm 102.61 kB

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ów
on 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ł: toczi1
postów: 75


umieszczony:
1 sierpnia 2016
07:42

edytowany:
1 sierpnia 2016
16:08

  
Witam Trebor

Cytat:
Napisałem coś tam w starym skoroszycie. Do testów powinno wystarczyć.


1.Wyskakuje błąd w tej komendzie jeśli dałem kodowanie zamykania po bezczynności: Method 'OnTime' of object Application failed i to się odwołuje do tego wiersza:

Application.OnTime EarliestTime:=czas, Procedure:="Zegar", Schedule:=False -- zaznaczę ze komendy przekopiowałem do innego pliku z makrem. Skopiowałem wszystko to z "Modułu" i to z "Ten skoroszyt"

A wlasnie n8e zamyka po bezczynnosci tylko jak wlacze uplynie zalozmy 20 sekund jak ustawie i zamyka. A nie dalo by sie jak nie uzywam pliku to wtedy zamyka zalozmy po 15 minutach. I zamyka tez inne plikiexcel jak mam otawrte .



2.Jak zrobić żeby wstawiało link do email aby tylko kliknąć i żeby otwierało bo teraz mam sam tekst

ActiveWorkbook.FollowHyperlink "mailto:" & ComboBox1.Value & ";" & ComboBox3.Value & "?subject=Zgłoszenie AZUP " & "&" & "body=" & "Wprowadzono nowe zgłoszenie AZUP - " & TextBox2.Value & _
"%0a Status AZUP - " & ComboBox5.Value & _
"%0a Prosze o uzupełnienie działań korygujących " & _
"%0a Link do pliku AZUP:.HTMLBody = H:\makra\Baza AZUP\Baza_AZUP_QP_8_ver.1.xlsm " & _
"%0a OpOpis Problemu/Usprawnienia: " & TextBox3.Value
Application.Wait (Now + TimeValue("0:00:01"))
Application.SendKeys "^~" 'skrót klawiaturowy w Twoim programie pocztowym

3. Jest możliwość ze jeśli daje Dodaj działania korygujące i jeśli chciałbym dopisać jakieś dodatkowe działania do tego samego AZUP poprze przycisk Dodaj działania to żeby nie kasowało tych wcześniejszych tylko dodawało do tamtych do tej samej komórki.

4. Jest możliwość żeby przycisk zamknij Azup 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 K to wtedy mogę zamknąć AZUP.


Prosze o pomoc
napisał: Trebor
postów: 1209


umieszczony:
30 lipca 2016
07:29

edytowany:
30 lipca 2016
07:40

  
nazwa pliku rozmiar
Korekta_zamkniecie.xlsm 63.60 kB

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ł: toczi1
postów: 75


umieszczony:
29 lipca 2016
01:40

edytowany:
29 lipca 2016
03:21

  
Cytat:
Który Outlook, office?

Microsoft Outlook 2010

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")


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.


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.
napisał: Trebor
postów: 1209


umieszczony:
28 lipca 2016
15:36

  
Który Outlook, office?
napisał: toczi1
postów: 75


umieszczony:
27 lipca 2016
23:02

edytowany:
28 lipca 2016
13:32

  
Cytat:
Jaki masz program pocztowy? Dla mnie jeszcze prościej jak podasz za pomocą jakiej sekwencji klawiszy można wysłać napisaną wiadomość.


Mam Outlooka i z tego co mnie pytalo jak uruchomilem makro to wyskoczylo zeby potwierdzic skrot, to tam było ctrl+enter


A takie pytanko czemu czasami nie chce wysłać z automatu email tylko się pojawi i nie wysyła a jeśli z innego userforma przekopiuje komendy to wtedy wysala automatycznie czasami własnie robi tak dziwnie.
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

  
nazwa pliku rozmiar
Baza__ AZUP (2).xlsm 73.41 kB

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 + Enter
Application.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

  
nazwa pliku rozmiar
Baza__ AZUP.xlsm 73.39 kB

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

  
nazwa pliku rozmiar
Baza__ AZUP.xlsm 66.44 kB

Nowe i nie tylko dopisałem. Powtórzone instrukcje z poprzednich makr powinieneś dostosować już sam.


<-wstecz  1 2 3 4  dalej->
wszystkich stron: 4


Sortuj posty: z