napisał: lukejohnr84 postów: 21
umieszczony: 13 sierpnia 2008 09:15
|
|
Hejka, kolejne pytanie o "istnienie arkusza"
problem polega na tym, ze tworze kolejne arkusze, na przyklad Arkusz1, Arkusz2 itd.
W kazdym kolejnym arkuszu jest odwolanie do poprzedniego, i tak: w Arkusz2 jest polecenie kopiowania danych z Arkusz1
Jednak mozliwa jest rowniez sytuacja, gdy utworzone zostana arkusze w ten sposob:
Arkusz1, Arkusz5, Arkusz6; w ktorych beda nastepujace powiazania:
W Arkusz6 kopiowanie danych z Arkusz5
W Arkusz5 kopiowanie danych z Arkusz1 (a nie z Arkusz4)
Probowalem to zalatwic w ten sposob:
For Each Tabela In Worksheets
If Tabela.Name = "Arkusz4" Then Call Szukaj(Arkusz5_Dane, "Arkusz4", "Arkusz5", 36, 0) Else
If Tabela.Name = "Arkusz3" Then Call Szukaj(Arkusz5_Dane, "Arkusz3", "Arkusz5", 36, 0) Else
If Tabela.Name = "Arkusz2" Then Call Szukaj(Arkusz5_Dane, "Arkusz2", "Arkusz5", 36, 0) Else
Call Szukaj(Arkusz5_Dane, "Arkusz1", "Arkusz5", 36, 0): Exit For
Next Tabela
"Szukaj" to funkcja znaleziona na forum, kopiuje:
Szukaj(Arkusz5_Dane, "Arkusz4", "Arkusz5", 36, 0) - z Arkusz4 do Arkusz5 dane oznaczone jako Arkusz5_Dane
Dane maja byc kopiowane do Arkusz5. I jesli istnieje Arkusz4, to wlasnie z niego, jesli go nie ma, to z Arkusz3 itd.
Ten kod kopiuje zawsze Arkusz1...
Jak to zmienic?
Macie jakies pomysly ?
Prosze o pomoc |
|
napisał: Dave postów: 8
umieszczony: 20 maja 2005 16:38
|
|
Hyh właśnie kombinowałem z Dir ale coś za bardzo widzę przekombinowałem, widać najprostrze jest najtrudniejsze...
Dzięki bardzo!
Pozdro
Dave |
|
napisał: Dave postów: 8
umieszczony: 19 maja 2005 10:36
|
|
Wszystko ok, ale pytanie jak to zrobić jeżeli plik (skoroszyt) nie jest otwarty??
Chodzi mi oto żeby makro sprawdzało czy plik istnieje w jakimś tam katalogu bez jego otwierania
Mam po prostu zrobionych serie makr i ten plik jest zmieniany lub usuwany itd, i czasami przyjdzie sobie takie koło i uruchomi te makra nie tworząc wcześniej tego pliku. Makra wtedy się wypierdzielają gdzieś w połowi i wywala komunikat o debugu, koło patrzy i nie wie oco chodzi...
Plz Help
Pozdro
Dave |
|
napisał: admin postów: 613
umieszczony: 17 maja 2005 17:41
|
|
Cytat: Hmm nie będę zaczynał nowego wątku.
To samo pytanie ale z plikiem :)
Pozdro
Dave
Witam,
Ta sama odpowiedź, ale z plikiem (skoroszytem).
Przeszukaj kolekcję skoroszytow przy użyciu pętli For...Each:
Jeśli skoroszyt o takiej nazwie już istnieje, to informujemy o tym użytkownika i kończymy pracę procedury.
For Each oWBK In Workbooks
'A tu warunek sprawdzajacy nazwę skoroszytu, np:
If oWBK.Name = "jakaś_nazwa" Then MsgBox "Arkusz o takiej nazwie istnieje!":Exit For
Next oWBK
Powodzenia! :D |
|
napisał: Dave postów: 8
umieszczony: 17 maja 2005 10:34
|
|
Hmm nie będę zaczynał nowego wątku.
To samo pytanie ale z plikiem :)
Pozdro
Dave |
|
napisał: Mir postów: 11
umieszczony: 15 maja 2005 21:42
|
|
Wielkie dzięki, po małej poprawce działa doskonale :D
For Each Arkusz In Worksheets
'A tu warunek sprawdzajacy nazwę arkusza, np:
If Arkusz.Name = "nazwa_arkusza" Then MsgBox "Arkusz o takiej nazwie istnieje!": Exit For
Next Arkusz |
|
napisał: admin postów: 613
umieszczony: 15 maja 2005 10:25
|
|
Witam,
Przeszukaj kolekcję arkuszy przy użyciu pętli For...Each:
Jeśli arkusz o takiej nazwie już istnieje, to informujemy o tym użytkownika i kończymy pracę procedury.
For Each oWBK in ThisWorkbook.Worksheets
'A tu warunek sprawdzajacy nazwę arkusza, np:
If oWBK.Name = jakaś_nazwa Then bNazwa = False:Exit For
Next oWBK
If bNazwa = False Then MsgBox "Arkusz o takiej nazwie istnieje!":Exit Sub
Powodzenia! |
|
napisał: Mir postów: 11
umieszczony: 15 maja 2005 09:59
|
|
Przy dodawaniu nowego arkusza nadaje mu nową nazwę.
Problem w tym, że jak już taki arkusz istnieje z taką nazwą to wywala mi błąd. A to bardzo nieeleganckie. |
|
wstecz 1 dalej wszystkich stron: 1
|
|