Jagodno

Forum osiedla Cztery Pory Roku
Dzisiaj jest pt gru 27, 2024 10:06 pm

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 64 ]  Przejdź na stronę Poprzednia  1, 2, 3, 4
Autor Wiadomość
 Tytuł:
PostZamieszczono: czw maja 05, 2005 11:30 am 
Offline
Awatar użytkownika

Rejestracja: pn mar 29, 2004 1:38 pm
Posty: 1813
Lokalizacja: Vivaldiego 2 !!!
Jakby co , to odeślij maila z uwagami co jest nie tak. Poprawi się :wink:

_________________
------------------------------------
Nie traktuj życia zbyt serio. I tak nie wyjdziesz z niego żywy
Cała Polska w Cieniu Śląska !!!

Obrazek


Na górę
 Wyświetl profil  
 
 Tytuł:
PostZamieszczono: śr lis 29, 2006 11:19 am 
Offline

Rejestracja: śr lip 07, 2004 9:48 am
Posty: 6
Mieszkaniec osiedla: Tak
witam wszystkich magików Excela. jak widze temat dawno nie był uzywany, ale mam nadzieję że ktoś odpowie i pomoże

tym razem mam problem z makrem, bo bez niego raczej się nie obędzie
mianowicie chciałbym stworzyć arkusz, w którym w zależności od wartości jednej z komórek, pojawiałyby się lub ukrywały wiersze.
założenia:
w komórce A1 włączam validację wartości i możliwość wyboru z listy "tak" lub "nie"
W przypadku wyboru "tak" powinny sie pokazać wiersze od 10 do 20, a ukryć od 20 do 30. W przypadku wyboru "nie" odwrotnie - ukryć wiersze od 10 do 20 a pokazać od 20 do 30
nie chciałbym do tego wykorzystywać przycisku aktywującego makro, tylko powinno ono zadziałać już w momencie wyboru z listy

czy ktoś mógłby pomóc i napisać takie makro. bede niezmiernie wdzięczny


Na górę
 Wyświetl profil  
 
 Tytuł:
PostZamieszczono: czw lis 30, 2006 11:12 pm 
Offline
Awatar użytkownika

Rejestracja: czw wrz 15, 2005 8:17 pm
Posty: 273
Lokalizacja: E1
Mieszkaniec osiedla: Tak
Pieszy pisze:
Oczywiście. Przepraszam, wtedy nie miałem czasu a później zapomniałem :oops:



Uruchomienie funkcji poszukiwania plików:
Set fs = Application.FileSearch
With fs


Określenie parametrów poszukiwania. Ścieżka dostępu (catalog):
.LookIn = "c:\raporty"

I nazwa pliku. Plik zaczyna się ciągiem znaków “Raport Dobowy”. Gwiazdka oznacza dowolny ciąg znaków a „.xls” oznacza rozszerzenie poszukiwanych plików:
.Filename = "Raport Dobowy*.xls"

Tu zaczyna się duży warunek. Jeżeli wynik poszukiwań jest dodatni, czyli zostały znalezione pliki spełniające podane wyżej kryteria:
If .Execute > 0 Then

to zostaje wyświetlone okno z informacją o odnalezieniu plików i ich ilości. Tekst ma postać „Odnalazłem x plików” :
MsgBox "Odnalazłem " & .FoundFiles.Count & " plików."

Tutaj otwiera się okno z pytaniem “Czy pobrać dane ze znalezionych plików?”.
Okno ma tytuł „Co dalej?”. Ma 2 przyciski: „Tak” i „Nie”. Jest oknem pytania. Jego domyślną odpowiedzią jest „Tak”.:

Msg = "Czy pobrać dane ze znalezionych plików?"
Style = vbYesNo + vbQuestion + vbDefaultButton1
Title = "Co Dalej?"


Wynikiem pytania zadanego w otwartym oknie jest odpowiedź „Response”:
Response = MsgBox(Msg, Style, Title)

Tutaj zaczyna się mały warunek. Jeżeli odpowiedzią jest „Tak” to idź do „pobranie”:
If Response = vbYes Then
GoTo pobranie


W przeciwnym wypadku idź do „koniec”:
Else
GoTo koniec


Koniec małego warunku:
End If

POBRANIE:
pobranie:

Tu zaczyna się pętla. Będzie wykonana tyle razy ile plików zostało odnalezionych:
For i = 1 To .FoundFiles.Count

Otwórz odnaleziony plik:
Workbooks.Open .FoundFiles(i)

Zaznacz w nim komórkę „B1”.
ActiveSheet.Range("B1").Select

Przy każdym kolejnym wykonaniu pętli wartość „kolumna” zwiększy się o jeden. Pozwoli to na zapisanie danych z każdego następnego pliku w osobnej kolumnie pliku zbiorczego.:
kolumna = kolumna + 1

Dana w zaznaczonej komórce „B1” dostaje nazwę Dana1:
Dana1 = ActiveCell.Value

Dana znajdująca się o jeden wiersz pod „B1” dostaje nazwę Dana2:
Dana2 = ActiveCell.Offset(1, 0).Value

Dana znajdująca się o dwa wiersze pod „B1” dostaje nazwę Dana3. Każda następna linia określa nazwę kolejnych danych. Offset to nic innego jak przsunięcie – jak w szachach: (a,b) gdzie a to nr wiersza a b to nr kolumny. Zamiast wiersza można zmieniać kolumny lub i jedno i drugie równocześnie. Można też za każdym razem do określenia położenia interesującej nas danej, używać polecenia „ActiveSheet.Range("X").Select” i „N = ActiveCell.Value”
, gdzie X oznacza adres komórki z daną a N nazwę danej.

Dana3 = ActiveCell.Offset(2, 0).Value
Dana4 = ActiveCell.Offset(3, 0).Value
Dana5 = ActiveCell.Offset(4, 0).Value
Dana6 = ActiveCell.Offset(5, 0).Value
Dana7 = ActiveCell.Offset(6, 0).Value
Dana8 = ActiveCell.Offset(7, 0).Value
Dana9 = ActiveCell.Offset(8, 0).Value
Dana10 = ActiveCell.Offset(9, 0).Value


Po zebraniu danych zamyka się okno pliku źródłowego:
ActiveWindow.Close

W oknie pliku zbiorczego zaznaczona zostaje komórka „A1”:
Range("A1").Select

Komórki znajdujące się w odsunięciu (a,b) od komórki „A1” dostają wartości Dana1, Dana2 itd. Ich adresy podawane są Tak jak przy zbieraniu danych: Offset(a,b), gdzie a to wiersz, b to kolumna (inna dla każdego pliku):
ActiveCell.Offset(0, kolumna).Value = Dana1
ActiveCell.Offset(1, kolumna).Value = Dana2
ActiveCell.Offset(2, kolumna).Value = Dana3
ActiveCell.Offset(3, kolumna).Value = Dana4
ActiveCell.Offset(4, kolumna).Value = Dana5
ActiveCell.Offset(5, kolumna).Value = Dana6
ActiveCell.Offset(6, kolumna).Value = Dana7
ActiveCell.Offset(7, kolumna).Value = Dana8
ActiveCell.Offset(8, kolumna).Value = Dana9
ActiveCell.Offset(9, kolumna).Value = Dana10


Koniec pętli. Przejście do kolejnego pliku.
Next i

Alternatywa dla dużego warunku. Jeżeli nie zostanie odnaleziony choćby jeden plik spełniający warunki poszukiwań:
Else

To zostaje wyświetlony komunikat:
MsgBox "Nie odnalazłem plików z danymi."

Koniec dużego warunku:
End If

„Wyłączenie” funkcji poszukiwań plików:
End With

KONIEC:
koniec:

Koniec makra:
End Sub


Oczywiście to makro wcale nie musi otwierać okien informacyjnych czy też pytać o to, czy pobrać dane z plików. Mozna to poprostu pominąć.
Uruchamiane może być przyciskiem zagnieżdżonym w arkuszu pliku zbiorczego lub automatycznie przy otwieraniu tegoż pliku.

Mam nadzieję, że ten opis jest na tyle przejrzysty i jasny, że wszystko jest już wiadome. Jeżeli nie (niestety, nie posiadam daru przekazywania wiedzy :cry: ) to zapraszam do mnie osobiście. Może wtedy będzie łatwiej.


noooo teraz to wszystko jasne ... :kopara:

_________________
Obrazek
... najnowsze badania mówią, że 3 na 10 Polaków żyje w stresie...
... pozostalych 7 - w Londynie...


Na górę
 Wyświetl profil  
 
 Tytuł:
PostZamieszczono: pt gru 01, 2006 4:30 pm 
Offline

Rejestracja: śr lip 07, 2004 9:48 am
Posty: 6
Mieszkaniec osiedla: Tak
udało się napisać to samemu, dla zainteresowanych

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Address = "$A$1" Then
If Target.Value = "tak" Then
Rows("10:20").Select
Selection.EntireRow.Hidden = True
Else
Rows("10:20").Select
Selection.EntireRow.Hidden = False
End If
End If
Application.EnableEvents = True
End Sub


pozdrawiam


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 64 ]  Przejdź na stronę Poprzednia  1, 2, 3, 4

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 43 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Powered by phpBB® Forum Software © phpBB Group