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.??

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


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 :/
yasi00
Dodano
31.03.2006 09:53:48
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


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 :/
yasi00
Dodano
31.03.2006 09:53:48
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))
ohcyR
Dodano
28.03.2006 15:18:20
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 ;)
yasi00
Dodano
28.03.2006 13:27:44
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
yasi00
Dodano
28.03.2006 00:21:32
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ę".
ohcyR
Dodano
27.03.2006 23:41:17
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... :)
yasi00
Dodano
27.03.2006 21:24:45
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):

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
ohcyR
Dodano
27.03.2006 18:09:02
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 ;))
Juro
Dodano
27.03.2006 17:11:54
yasi00
Dodano:
27.03.2006 14:09:06
Komentarzy:
9
Strona 1 / 1