Forum elektroda.pl

Regulamin  | Punkty  | Dodaj...  | Ostatnie  | Szukaj  | Rejestracja  | Zaloguj

Ta strona używa cookie. Dowiedz się więcej o celu ich używania i zmianie ustawień cookie w przeglądarce.
Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.

MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Napisz nowy temat  Odpowiedz do tematu      Strona Główna -> Forum elektroda.pl -> Programowanie Ogólne -> Programowanie Początkujący -> MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza
Autor
Wiadomość
Vansen1
Poziom 8
Poziom 8


Dołączył: 28 Cze 2012
Posty: 25
Miasto: Lubin

Post#1 Post autora tematu 17 Mar 2014 22:46   

MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Witam...

Szukając tematu związanego z kalendarzem dla Excela, znalazłem na naszym forum
post excel VBA - Microsoft MonthView Control - wstawianie kalendarza jak to zrobić??
z dnia 29 Grudnia 2012

Autorem tej perełki [kalendarza], jak wynika z postu, jest użytkownik marcinj12.

Pozwoliłem sobie na wykorzystanie tego kalendarza do własnych potrzeb.
Oczywiście mam jednak z nim związane pytania:
1. Kalendarz autorstwa marcinj12, do swojej aktywacji wykorzystuje ikonę przycisku [Button].
2. Wybraną w kalendarzu datę wstawia do jednej określonej komórki.
3. Po wybraniu daty i wstawieniu jej do komórki wyświetla komunikat o tym jaką datę wybrano.

Jak mogę dostosować ten kalendarz do swoich potrzeb.

Ad 1.
Chcę żeby aktywacja opcji wyboru kalendarza, następowała po kliknięciu na komórkę w kolumnach D i K.
Żeby wyświetlała się wówczas przy niej mała ikona strzałki, jak przy rozwijanej liście.
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

Dopiero po kliknięciu na nią aktywował się kalendarz (wyśrodkowany względem okna arkusza)
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

Wstawiona data do komórki w kolumnie D
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

I taka sama czynność dla komórek kolumny K

Ad 3.
Żeby nie wyświetlał się komunikat o tym jaką wybrano datę.
Chcę natomiast żeby wyświetlał się za to komunikat o błędzie, otóż:
- data w kolumnie D nie może być późniejsza od daty w kolumnie K
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

i odwrotnie

- data w kolumnie K nie może być wcześniejsza od daty w kolumnie D
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

Komunikaty (wyśrodkowane względem okna arkusza)

Ściślej rzecz ujmując:
- data w kolumnie D oznacza czas zatrzymania urządzenia,
- natomiast data w kolumnie K oznacza czas jej uruchomienia.

Proszę o pomoc...
-------------------------------------------------------
W załączeniu:
- Plik opisywanego arkusza (Format - MS EXCEL 2010 PL)
- Kalendarz autorstwa marcinj12
- Pliki graficzne - screeny

Załączniki:
Powrót do góry
   
Google


Google Adsense


Post# 17 Mar 2014 22:46   





Powrót do góry
   
marcinj12
Poziom 23
Poziom 23


Dołączył: 14 Lut 2005
Posty: 2847
Miasto: Wrocław

Post#2 17 Mar 2014 23:18   

Re: MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


O proszę, miło wiedzieć, że mój kalendarz żyje i ma się dobrze ;)

Odpowiadając na Twoje pytania:
Jako że jest to forma i makro, po pierwsze Twój plik musi mieć rozszerzenie .xlsm
Musisz do niego zaimportować formę kalendarza z mojego pliku - w VBA opcją ExportFile oraz Import File. To na początek.

Ad. 1. i 2.
Tu się trochę rozmijamy - może się pokazywać po kliknięciu komórki [dokładniej: po zmianie selekcji], albo po wyborze czegoś z listy, którą sobie uprzednio utworzysz.
Jeżeli przy zmianie selekcji, można wykorzystać zdarzenie SelectionChanged.
Czyli w Arkusz1 dostaw kod:
Kod: vb
Musisz być zalogowany, aby zobaczyć treść.


Okno zdaje się jest wycetrowane względem dokumentu, natomiast ustawienia możesz zawsze zmienić we właściwościach [okienko Properties] formy ustawiając StartUpPosition.

Ad 3. Wystarczy dodać kilka warunków If sprawdzających, czy wszystko gra:
Kod: vb
Musisz być zalogowany, aby zobaczyć treść.

Powrót do góry
   
Google


Google Adsense


Post# 17 Mar 2014 23:18   





Powrót do góry
   
Vansen1
Poziom 8
Poziom 8


Dołączył: 28 Cze 2012
Posty: 25
Miasto: Lubin

Post#3 Post autora tematu 18 Mar 2014 23:16   

Re: MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Na YouTube znalazłem film z odpowiedzią na część mojego pytania.
Link jest TUTAJ.

Film pokazuje krok po kroku, jak skopiować i wstawić makro do innego arkusza,
oraz jak sformatować komórki by wyświetlał się właściwy format daty.

Gdy człowiek ogląda na filmie jak robią to inni, to wszystko zdaje się być takie proste.
Ale tylko się zdaje, wiedza jednak kosztuje...

marcinj12 nie obraź się ale pozwoliłem sobie, do swojego arkusza wstawić kalendarz podobny do twojego.
Z linku znalezionego w tym filmie
- link do postu TUTAJ
- link do pliku TUTAJ

Twój kalendarz rzeczywiście jest wycentrowany, względem okna arkusza.
Moje niedopatrzenie - :oops:

Napotkałem jednak na problem.
Po wklejeniu Twojego drugiego kodu, dotyczącego wyświetlania komunikatów o wprowadzeniu błędnej daty.

Wkleiłem go do swojego arkusza, zaraz za kodem kalendarza.
Od tamtej pory, próba pracy z arkuszem kończy się wyświetleniem takiego komunikatu:
MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza

i przeniesieniem nas do okna edytora VBA.

Co zrobiłem źle... :?:

W załączeniu przesyłam:
- Plik arkusza (Plik_1_kod_VB.xlsm) z kodem kalendarza
- Plik arkusza (Plik_2_kody_VB.xlsm) z kodem kalendarza oraz Twoim kodem
- Kalendarz z podanego linku w filmie
- Screen komunikatu

Załączniki:
Powrót do góry
   
marcinj12
Poziom 23
Poziom 23


Dołączył: 14 Lut 2005
Posty: 2847
Miasto: Wrocław

Post#4 19 Mar 2014 00:02   

Re: MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Masz 2x zdarzenie Worksheet_SelectionChange - a może być tylko jedno. Musisz połączyć te dwa kody, żeby dawały oczekiwany rezultat.
Powrót do góry
   
Vansen2
Poziom 2
Poziom 2


Dołączył: 18 Sie 2010
Posty: 3

Post#5 19 Mar 2014 10:13   

Re: MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Najpierw zamieniłem w kodzie nazwę formuł kalendarzy:
z nazwy Kalendarz
na obecną nazwę CalendarFrm

Tak wyglądał kod kalendarza oraz komunikatów o błędzie daty,
przed jego połączeniem.

Kod: vb
Musisz być zalogowany, aby zobaczyć treść.


Tak wygląda teraz po połączeniu w jeden kod.
Niestety nadal nie działa, coś musiałem jeszcze przeoczyć.

Kod: vb
Musisz być zalogowany, aby zobaczyć treść.


Zerknijcie proszę swoim doświadczonym okiem, gdzie zrobiłem babola
Powrót do góry
   
marcinj12
Poziom 23
Poziom 23


Dołączył: 14 Lut 2005
Posty: 2847
Miasto: Wrocław

Post#6 19 Mar 2014 19:48   

Re: MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza


Bo tych kodów nie można tak po prostu połączyć - mój kalendarz wykorzystuje inne metody niż ten, który znalazłeś. On wstawia datę do arkusza już na poziomie formatki, więc w zasadzie musisz go przerobić tak, żeby to on sprawdzał poprawność kolumn... Zresztą, nie silę się na tłumaczenia, w załączniku działający przykład, podejrzyj sobie.

PS. adamas_nt wrzucił poniekąd słuszną uwagę, którą nie wiedzieć czemu już usunął, ale zdążyłem przeczytać ;)

Rzeczywiście, zamiast Worksheet_SelectionChange można wstawić całe zdarzenie w Worksheet_BeforeDoubleClick - wtedy kalendarz będzie się pokazywał po podwójnym kliknięciu. Tu się zgodzę, wybór należy do autora :)

Załączniki:
Powrót do góry
   
Napisz nowy temat  Odpowiedz do tematu      Strona Główna -> Forum elektroda.pl -> Programowanie Ogólne -> Programowanie Początkujący -> MS EXCEL VBA - Wstawienie do komórki opcji wyświetlania kalendarza
Strona 1 z 1
Podobne tematy
VBA - Excel Wstawienie aktualnej daty jeśli np. C1=A2 (6)
excel VBA - Microsoft MonthView Control - wstawianie kalendarza jak to zrobić?? (20)
Excel VBA - import pliku txt - szukanie ciagu znakow i wstawienie do nowej komor (7)
[vba][excel] Przepisywanie koloru tła komórki (5)
Excel VBA -odczytanie komórki, zamiana i zapis (5)
VBA EXCEL - Replace - pobranie infomarcji z komórki (10)
Excel VBA- jak wybrać niepuste komórki w kolumnie (6)
[Excel, Vba] Zwiększanie komórki o wartoś z innego arkusza (4)
[VBA, Excel] wyszukanie pierwszej wolnej komórki w kolumnie (4)
[VBA] Excel 2010 - zwracanie komórki spełniające 2 warunki (5)


Administrator || Moderatorzy || Regulamin forum || Regulamin ogólny || Informacja o cookies || Kontakt

Page generation time: 0.083 seconds

elektroda.pl temat RSS