Excel makro przycisk
Witam. Otoz mam pewien maly problem.
Jak stworzyc makro ktore doda mi na koncu dokumentu excela np nowy wiersz w tabeli wg powyzszego wiersza tzn. zeby zawieral te same formuly itp. Np dodanie nowego ucznia na bazie poprzedniego wiersza. A wszystko to po nacisnieciu przycisku.
Ps wiem jak stworzyc makro kopiujace dany wiersz tabeli pod spod ale kiedy wywoluje je to ono zawsze mi kopiuje jeden wiersz w tym samym miejscu a potrzebuje cos na zasadzie "dodaj nowego na samym dole". :) Nie wiem czy to z sensem napisalem ale jakos trudno sie wyslowic na pismie ;)
No i jeszcze jeden maly problemik...
Jak zrobic zeby excel blokowal mozliwosc wpisania innych znakow niz podane. ( Np kody: 8,u,ch,ux,ub itd..) A jesli uzytkownik wstawi inna dana to zeby mu wyrzucil blad ze wstawil nieprawidlowa wartosc.??
Jak stworzyc makro ktore doda mi na koncu dokumentu excela np nowy wiersz w tabeli wg powyzszego wiersza tzn. zeby zawieral te same formuly itp. Np dodanie nowego ucznia na bazie poprzedniego wiersza. A wszystko to po nacisnieciu przycisku.
Ps wiem jak stworzyc makro kopiujace dany wiersz tabeli pod spod ale kiedy wywoluje je to ono zawsze mi kopiuje jeden wiersz w tym samym miejscu a potrzebuje cos na zasadzie "dodaj nowego na samym dole". :) Nie wiem czy to z sensem napisalem ale jakos trudno sie wyslowic na pismie ;)
No i jeszcze jeden maly problemik...
Jak zrobic zeby excel blokowal mozliwosc wpisania innych znakow niz podane. ( Np kody: 8,u,ch,ux,ub itd..) A jesli uzytkownik wstawi inna dana to zeby mu wyrzucil blad ze wstawil nieprawidlowa wartosc.??
Odpowiedzi: 9
Hmm w taki mrazie mam jeszcze jedno pytanie, teraz to przechodze sam siebie w niewiedzy i brakach ze studiów :)
Chodzi mi dokladnie o nazwe miesiąca źeby automatycznie sie zmieniała co miesiąc narazie skorzystałem z
Funkcja ta zwraca mi liczbę a potrzebna jest mi nazwa miesiąca.
Natomiast jelsi korzystam z funkcji jeźeli to moge zagnieźdzćtylko do września :) a potem to juz nie idzie, bo z tego co wiem to moźna zagnieździć7 tych samych funkcji w jednym poleceniu. Czy istnieje jakies inne moźe prostsze rozwiąznie?
Dodam ze nie moge zastosować akurat tu formatowania komórek DATA poniewaź są tu takźe wartości tekstowe i korzystam z operatora &.
Z góry dzięki za pomoc
Dobra juz uzupełniłem braki i rozwiązałem w najprostszy moźliwy sposób :). Ale z tym formatowaniem rozszerzonym i zaznaczaniem weekendów dalej mam problem :/
Chodzi mi dokladnie o nazwe miesiąca źeby automatycznie sie zmieniała co miesiąc narazie skorzystałem z
miesiąc(dziś())
Funkcja ta zwraca mi liczbę a potrzebna jest mi nazwa miesiąca.
Natomiast jelsi korzystam z funkcji jeźeli to moge zagnieźdzćtylko do września :) a potem to juz nie idzie, bo z tego co wiem to moźna zagnieździć7 tych samych funkcji w jednym poleceniu. Czy istnieje jakies inne moźe prostsze rozwiąznie?
Dodam ze nie moge zastosować akurat tu formatowania komórek DATA poniewaź są tu takźe wartości tekstowe i korzystam z operatora &.
Z góry dzięki za pomoc
Dobra juz uzupełniłem braki i rozwiązałem w najprostszy moźliwy sposób :). Ale z tym formatowaniem rozszerzonym i zaznaczaniem weekendów dalej mam problem :/
Hmm w taki mrazie mam jeszcze jedno pytanie, teraz to przechodze sam siebie w niewiedzy i brakach ze studiów :)
Chodzi mi dokladnie o nazwe miesiąca źeby automatycznie sie zmieniała co miesiąc narazie skorzystałem z
Funkcja ta zwraca mi liczbę a potrzebna jest mi nazwa miesiąca.
Natomiast jelsi korzystam z funkcji jeźeli to moge zagnieźdzćtylko do września :) a potem to juz nie idzie, bo z tego co wiem to moźna zagnieździć7 tych samych funkcji w jednym poleceniu. Czy istnieje jakies inne moźe prostsze rozwiąznie?
Dodam ze nie moge zastosować akurat tu formatowania komórek DATA poniewaź są tu takźe wartości tekstowe i korzystam z operatora &.
Z góry dzięki za pomoc
Dobra juz uzupełniłem braki i rozwiązałem w najprostszy moźliwy sposób :). Ale z tym formatowaniem rozszerzonym i zaznaczaniem weekendów dalej mam problem :/
Chodzi mi dokladnie o nazwe miesiąca źeby automatycznie sie zmieniała co miesiąc narazie skorzystałem z
miesiąc(dziś())
Funkcja ta zwraca mi liczbę a potrzebna jest mi nazwa miesiąca.
Natomiast jelsi korzystam z funkcji jeźeli to moge zagnieźdzćtylko do września :) a potem to juz nie idzie, bo z tego co wiem to moźna zagnieździć7 tych samych funkcji w jednym poleceniu. Czy istnieje jakies inne moźe prostsze rozwiąznie?
Dodam ze nie moge zastosować akurat tu formatowania komórek DATA poniewaź są tu takźe wartości tekstowe i korzystam z operatora &.
Z góry dzięki za pomoc
Dobra juz uzupełniłem braki i rozwiązałem w najprostszy moźliwy sposób :). Ale z tym formatowaniem rozszerzonym i zaznaczaniem weekendów dalej mam problem :/
Hej.
Formatowanie warunkowe w A1 dla niedzieli:
"Formuła jest" =DZIEŃ.TYG(A1;2)=7
Formatowanie warunkowe moźesz kopiować metodą kopiuj –> wklej specjalnie / formaty
Zobacz jeszcze takie formuły do wykorzystania w ewidencji:
Nazwa dnia tygodnia dla danej daty:
=WYBIERZ(DZIEŃ.TYG(A1;2);"Pon";"Wto";"Śro";"Czw";"Pią";"Sob";"Nie")
Liczba dni w miesiącu:
=DZIEŃ(DATA(ROK(A1);MIESIĄC(A1)+1;0))
Formatowanie warunkowe w A1 dla niedzieli:
"Formuła jest" =DZIEŃ.TYG(A1;2)=7
Formatowanie warunkowe moźesz kopiować metodą kopiuj –> wklej specjalnie / formaty
Zobacz jeszcze takie formuły do wykorzystania w ewidencji:
Nazwa dnia tygodnia dla danej daty:
=WYBIERZ(DZIEŃ.TYG(A1;2);"Pon";"Wto";"Śro";"Czw";"Pią";"Sob";"Nie")
Liczba dni w miesiącu:
=DZIEŃ(DATA(ROK(A1);MIESIĄC(A1)+1;0))
ohcyR:
Powodzenia w tworzeniu ewidencji czasu pracy.
Hmm chyba ktos mnie rozszyfrowal... :wink:
Mam jeszcze takie pytanie:
W kolumnach mam pola od 1 do 31 oznaczajace dni miesiaca. Czy mozna zastosowac formatowanie warunkowe kolumn w zaleznosci od tego czy jest sobota czy niedziela w roznych miesiacach danego roku. :)? O tyle o ile z prostym formatowaniem warunkowym sobie poradze to z takim pseudo kalendarzem juz nie bardzo. ;)
Aczkolwiek czekam na pomysly i pomoc
Z gory thx ;)
ohcyR:Zobacz http://forum.centrumxp.pl/viewtopic.php?t=51168
Dodam tylko, źe do któregoś z uźywanych pasków narzędzi moźesz dodać ikonkę kłódeczki.
Jak? Z menu: narzędzia / dostosuj, zakładka "polecenia", kategoria "format", polecenia "zablokuj komórkę".
Hmm jestes wielki ;) Masz u mnie Piwko ;)
Of kors dokladnie o to mi chodzilo :)
POzdrawiam,
Piotr
Zobacz http://forum.centrumxp.pl/viewtopic.php?t=51168
Dodam tylko, źe do któregoś z uźywanych pasków narzędzi moźesz dodać ikonkę kłódeczki.
Jak? Z menu: narzędzia / dostosuj, zakładka "polecenia", kategoria "format", polecenia "zablokuj komórkę".
Dodam tylko, źe do któregoś z uźywanych pasków narzędzi moźesz dodać ikonkę kłódeczki.
Jak? Z menu: narzędzia / dostosuj, zakładka "polecenia", kategoria "format", polecenia "zablokuj komórkę".
ohcyR:Witam....
Drugi problem moźna rozwiązać przy pomocy sprawdzania poprawności.( z menu: dane / sprawdzanie poprawności).
Jako "dozwolone" wybrać lista i do pola "źródło" wpisać wartości dozwolone odzielone średnikami (np. 8;u;ch;ux) lub wskazać zakres komórek, gdzie te wartości się znajdują(w tym samym skoroszycie). Gdyby zakres ten miał być w innym skoroszycie, naleźy dla tego zakresu zdefiniować nazwę i nazwę tę wpisać jako źródło listy.
Powodzenia w tworzeniu ewidencji czasu pracy.
Pozdrawiam
Heh drugi problem udalo mi sie rozwiazac wczesniej. Teraz jeszczxe pozostal pierwszy ale to juz jutro w pracy bede nad tym myslal :).
I jeszcze jedno pytanie jak zablokowac jakac czesc arkusza tak aby nie mozna bylo nic w niej zmienic. Natomiast czesc arkusza zeby sluzyla tylko i wylacznie do wpisywania danych? :)
Z gory dzieki... :)
Witam.
Zamiast przycisku uruchamiającego makro, proponuję procedurę obsługi zdarzenia "dokonano zmiany w skoroszycie", którą naleźy umieścić w module właściwego arkusza (nie w module ogólnym Module1):
Gdyby jednak była faktyczna potrzeba uruchamiania makra przyciskiem, to do modułu ogólnego moźna wstawić takie makro:
Drugi problem moźna rozwiązać przy pomocy sprawdzania poprawności.( z menu: dane / sprawdzanie poprawności).
Jako "dozwolone" wybrać lista i do pola "źródło" wpisać wartości dozwolone odzielone średnikami (np. 8;u;ch;ux) lub wskazać zakres komórek, gdzie te wartości się znajdują(w tym samym skoroszycie). Gdyby zakres ten miał być w innym skoroszycie, naleźy dla tego zakresu zdefiniować nazwę i nazwę tę wpisać jako źródło listy.
Powodzenia w tworzeniu ewidencji czasu pracy.
Pozdrawiam
Zamiast przycisku uruchamiającego makro, proponuję procedurę obsługi zdarzenia "dokonano zmiany w skoroszycie", którą naleźy umieścić w module właściwego arkusza (nie w module ogólnym Module1):
Private Sub Worksheet_Change(ByVal Target As Range)
'kolumna, której wypełnienie uruchomi akcję kopiowania wiersza
Const ostania_kolumna = "D"
Dim w As Long
'ostatni wypełniony wiersz
w = Range(ostania_kolumna & 65536).End(xlUp).Row
'czy wpisu dokonano w ostatnim wierszu?
If Target.Address(0, 0) <> ostania_kolumna & w Then Exit Sub
'kopiowanie ostatniego wiersza
Rows(w).Copy
'wklejenie wszystkiego
Range("A" & w + 1).Select
ActiveSheet.Paste
'skasowanie stałych
On Error Resume Next
Selection.SpecialCells(xlCellTypeConstants).ClearContents
On Error GoTo 0
Application.CutCopyMode = False
'przeniesienie zaznaczenia komórki na kolejny wiersz
Range("A" & w + 1).Select
End Sub
Gdyby jednak była faktyczna potrzeba uruchamiania makra przyciskiem, to do modułu ogólnego moźna wstawić takie makro:
Sub Kopiuj_Ostatni_Wiersz()
'kolumna, która zawsze jest w ostatnim wierszu wypełniona
'np. liczba porzadkowa lub zawierająca formułę
Const ostania_kolumna = "C"
Dim w As Long
'ostatni wypełniony wiersz
w = Range(ostania_kolumna & 65536).End(xlUp).Row
'kopiowanie ostatniego wiersza
Rows(w).Copy
'wklejenie wszystkiego
Range("A" & w + 1).Select
ActiveSheet.Paste
'skasowanie stałych
On Error Resume Next
Selection.SpecialCells(xlCellTypeConstants).ClearContents
On Error GoTo 0
Application.CutCopyMode = False
'przeniesienie zaznaczenia komórki na kolejny wiersz
Range("A" & w + 1).Select
End Sub
Drugi problem moźna rozwiązać przy pomocy sprawdzania poprawności.( z menu: dane / sprawdzanie poprawności).
Jako "dozwolone" wybrać lista i do pola "źródło" wpisać wartości dozwolone odzielone średnikami (np. 8;u;ch;ux) lub wskazać zakres komórek, gdzie te wartości się znajdują(w tym samym skoroszycie). Gdyby zakres ten miał być w innym skoroszycie, naleźy dla tego zakresu zdefiniować nazwę i nazwę tę wpisać jako źródło listy.
Powodzenia w tworzeniu ewidencji czasu pracy.
Pozdrawiam
Przede wszystkim musialbys sprawdzic ktory wiersz jest wolny sprawdzajac czy jego zawartosc jest =""
Mozesz to zrobic poprzez petle for a numer wiersz to bedzie wartosc zmiennej w ktorej natrafiono na pusty wiersz.
Kopiowanie pisales, ze znasz.
Kwestia złych znakow – jezeli dobrze zrozumialem, to mozesz sprawdzic przed wstawieniem wartosci czy zawiera w ciagu znakow nieprawidlowy znak (ale w tej kwestii sam zadalem wlasnie pytanie na forum ;))
Mozesz to zrobic poprzez petle for a numer wiersz to bedzie wartosc zmiennej w ktorej natrafiono na pusty wiersz.
Kopiowanie pisales, ze znasz.
Kwestia złych znakow – jezeli dobrze zrozumialem, to mozesz sprawdzic przed wstawieniem wartosci czy zawiera w ciagu znakow nieprawidlowy znak (ale w tej kwestii sam zadalem wlasnie pytanie na forum ;))
Strona 1 / 1