Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 27731 Skopiuj do schowka ankieta i wyniki
Autor Wiadomość
kati 
Starszy Forumowicz



Posty: 54
Wysłany: 2012-02-01, 13:40   ankieta i wyniki

Witam
Potrzebuje taki manewr wpisac w makro: wyniki ankiet - one teraz sa widoczne w ark3/kol. M, ale kolumna bedzie ukryta dla uzytkownikow - zeby automatycznie kopiowaly sie do arkusza1 "wyniki_ankiet". Ktory btw tez ma byc docelowo ukryty. Automatycznie w tym sensie, ze nie w czasie rzeczywistym, tylko pod batonik przy zatwierdzaniu ankiety chce podpiac operacje przerzucenia kopii tych wynikow.
Z tym, ze z transpozycja: wiersze 2-12 to jest metryczka kazdej indywidualnej ankiety, ktora ma sie wpisywac do kol. C - I w arkuszu wynikowym. No i dla kazdej ankiety - w jednym, wlasciwym wierszu - wyniki, jak ten przyklad w ark1/wiersz5.

Byloby zbyt proste, gdybym dala zlinkowane komorki pomiedzy jednym = drugim arkuszem. Ale kolejne arkusze z kazda kolejna ankieta tworzone sa z wyjsciowej wersji ankiety przez makro [zobaczcie Alt+F11]. A nigdy z gory nie jest wiadome, ile za dany okres sprawozdawczy bedzie umow, podlegajacych ankietom w badanych obszarach. I ile bedzie arkuszow. Jak to rozpracowac?

Please help. Nie mam pojecia, jak z tego wybrnac..

[ Dodano: 2012-02-02, 07:14 ]
Uuh :-|
Jesli byl juz taki watek na forum wrzuccie chociaz linka, moze przeoczylam?
Poradzcie cos prosze, bez tego lezy mi kwartalne sprawozdanie

ankieta.zip
Pobierz Plik ściągnięto 13 raz(y) 16.78 KB

ID posta: 147001 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

Kaper 
Excel Expert



Pomógł: 1152 razy
Posty: 1626
Wysłany: 2012-02-02, 16:54   

generalnie:
potrzebujesz informacji o pierwszym wolnym wierszu w arkuszu podsumowującym
wpisz na forum w szukajce np. funkcja last() albo wykorzystaj konstrukcję zbliżoną do tej
Kod:
wolny_wiersz=range("komórka nagłówkowa").end(xldown).row+1

i po zakończeniu ankiety np. po kliknięciu zrób przeniesienie danych z odpowiednich komórek do tak wyznaczonego wiersza.
np.
Kod:
worksheets("wyniki_ankiet").Range("J"&wolny_wiersz)=Activesheet.Range("M14").value

i podobnie z innymi polami. Takie podejście uniezależni Cię od liczby kolejnych ankiet generowanych po każdorazowym naciśnięciu PrzejdźDalej

Pozdrawiam,
_________________
Kaper

Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić.
ID posta: 147170 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

kati 
Starszy Forumowicz



Posty: 54
Wysłany: 2012-02-03, 13:14   

Kaper napisał/a:
i po zakończeniu ankiety np. po kliknięciu zrób przeniesienie danych z odpowiednich komórek do tak wyznaczonego wiersza

sprobuje. ale co z danymi w wierszach 2-12 ankiety, ktore maja charakter nieciagly i nieregularny [tzn. nie sa np. kolejno nastepujacymi niepustymi], a sluza jako niezbedna metryczka identyfikacyjna? I maja isc jako pierwsze w kol. C - I arkusza wynikowego?
k
ID posta: 147290 Skopiuj do schowka
 
 
Kaper 
Excel Expert



Pomógł: 1152 razy
Posty: 1626
Wysłany: 2012-02-03, 14:00   

Może takich kilka podpowiedzi do jednej z procedur obsługi przycisku 3 będzie pomocne.

Kod:
Sub Przycisk3_Kliknięcie()
Dim wolny As Long

' proponuję najpierw skopiować
    Sheets("ankieta").Select
    Sheets("ankieta").Copy After:=Worksheets(Worksheets.Count)
'i zmienić nazwę (może na inną - zawierającą np. numer umowy albo po prostu kolejny nr ankiety
    ActiveSheet.Name = "ankieta" & Worksheets.Count - 3
' aż do "End With" samo .cośtam będzie traktowane jak Worksheets("wyniki_ankiet").cośtam
    With Worksheets("wyniki_ankiet")
'obliczamy gdzie w zbiorczy można wpisywać
      wolny = .Range("F2").End(xlDown).Row + 1
' i przepisujemy nagłówek
      .Range("C" & wolny) = Range("D2")
      .Range("D" & wolny) = Range("D4") & "-" & Range("E4") & "-" & Range("F4") & "-" & Range("G4")
      .Range("E" & wolny) = Range("D6")
      .Range("F" & wolny) = Range("H8")
'   itd.
' oraz zapisujemy nr kolejny
      .Range("B" & wolny) = .Range("B" & wolny - 1) + 1
'teraz wyniki korzystając z Twojej konstrukcji pozostałej po rejetratorze makr
      Range("M14").Select
      .Range("J" & wolny) = Selection.Value
      Selection.End(xlDown).Select
      .Range("K" & wolny) = Selection.Value
      Selection.End(xlDown).Select
      .Range("L" & wolny) = Selection.Value
      Selection.End(xlDown).Select
      .Range("M" & wolny) = Selection.Value
      Range("d2").Select
    End With
' a tu Twoje zerowanie arkusza ankieta (też po rejestratorze)
    Sheets("ankieta").Select
    Range("M14").Select
    Selection.FormulaR1C1 = "0"
    Selection.End(xlDown).Select
    Selection.FormulaR1C1 = "0"
    Selection.End(xlDown).Select
    Selection.FormulaR1C1 = "0"
    Selection.End(xlDown).Select
    Selection.FormulaR1C1 = "0"
' no i jeszcze przydałoby się zerowanie "metryczki" czyli D2, D4:H4 itd.
    Range("d2").Select
End Sub


Zostawiłem te wszystkie Selection.End(xlDown).Select ale zamiast nich mogłoby się obejść bez selekcji czyli przy przepisywaniu:
Kod:
      .Range("J" & wolny)=Range("M14").value
      .Range("K" & wolny)=Range("M24").value
' itd


a przy zerowaniu
Kod:
      Range("M14").value=0
      Range("M24").value=0
' itd


Pozdrawiam,
_________________
Kaper

Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić.
ID posta: 147298 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

kati 
Starszy Forumowicz



Posty: 54
Wysłany: 2012-02-06, 08:27   

Kaper napisał/a:
Może takich kilka podpowiedzi do jednej z procedur obsługi przycisku 3 będzie pomocne

Kaper, dzieki ogromne. Bardziej niz pomocne :tak chociaz troche zmodyfikowalam koncepcje:
Kod:
' najpierw idzie start_click:: Copy_Ankieta_Szablon
' i zaczynamy prace:: Range("d2").Select
'
' a w ramach procedury zatwierdzania zatwierdzaniu wypelnionej ankiety::
Sub Copy_Szablon()
With Worksheets("ankieta")
    Sheets("ankieta").Select
    Sheets("ankieta").Copy After:=Worksheets(Worksheets.Count)
    Range("d2").Select
End With
End Sub

Inaczej mowiac, ankiete jako szablon pozostawiam w stanie wyzerowanym, bez koniecznoscie resetowania wynikow i zawartosci metryczki w ankiecie wypelnionej.

Kaper napisał/a:
Kod:
' proponuję najpierw skopiować i zmienić nazwę (może na inną - zawierającą np. numer umowy albo po prostu kolejny nr ankiety
ActiveSheet.Name = "ankieta" & Worksheets.Count - 3

Jako nazwe arkusza wprowadzam faktycznie numer umowy, korzystajac ze zlaczonej wartosci komorek d4:h4. Sam numer kolejny arkusza skutkowalby zawirowaniami, bo skoroszyty z ankietami bedzie wypelniac x-osob, wiec LP by mi sie powtarzaly. A tak zachowam unikalne oznaczenia identyfikujace kazda ankiete.

Kaper napisał/a:
Zostawiłem te wszystkie Selection.End(xlDown).Select ale zamiast nich mogłoby się obejść bez selekcji czyli przy przepisywaniu:
Kod:
.Range("J" & wolny)=Range("M14").value
' itd

Jak dotychczas zostawilam to w postaci odwolan wzglednych przez Selection.End(xlDown).Select. To wczesniej w zalaczniku to tylko szkielet ankiety dla pokazania istoty problemu. Calosc bedzie troche bardziej pokazna, i po wpisaniu tresci pytan i odpowiedzi zakladam, ze pozmieniaja mi sie rozmiary pola grup dla kazdego pytania. Sprawniej mi bedzie poszukiwac kolejnej niepustej w kol. M, niz ciagle sprawdzac odwolania bezwzgledne. Przynajmniej na tym etapie.

Kaper napisał/a:
oraz zapisujemy nr kolejny
Kod:
.Range("B" & wolny) = .Range("B" & wolny - 1) + 1

Kurcze, to jest akurat swietne, a takie oczywiste o ile sie wie, jak :mrgreen:
Tylko tu idzie moje Pyt. 1: jezeli na koncowym etapie, po wprowadzeniu wszystkich ankiet, chce makrem wywolac drukowanie arkusza wynikowego, to jak dostosowac teraz ustawiony obszar drukowania zeby rozszerzyl sie do zakresu z ostatnim wierszem wlacznie?

Kaper napisał/a:
Kod:
' no i jeszcze przydałoby się zerowanie "metryczki" czyli D2, D4:H4 itd

Poniewaz zastosuje kopiowanie wyjsciowej ankiety, wiec operacja zerowania nie bedzie chyba potrzebna. Ale tu idzie moje Pyt. 2 bo tego nie wiem: jak makrem zmienic wybor z rozwijanej listy wyboru? Tzn, gdybym potrzebowala z juz wypelnionej ankiety "wyzerowac" komorke z lista do pozycji wyjsciowej "wybierz" ?

Pozdr
Kaska
ID posta: 147590 Skopiuj do schowka
 
 
Kaper 
Excel Expert



Pomógł: 1152 razy
Posty: 1626
Wysłany: 2012-02-06, 10:19   

Ustawianie obszaru wydruku i uruchomienie drukowania możesz zrobić mniej więcej tak:
Kod:
Sub Drukuj()
With Worksheets("wyniki_ankiet")
  .PageSetup.PrintArea = "$B$1:$O$" & .Range("F2").End(xlDown).Row
  .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End With
End Sub

Możesz też np. z końcem obszaru drukowania "pójść w górę" od ostatniego wiersza w arkuszu
Kod:
  .PageSetup.PrintArea = "$B$1:$O$" & .cells(.cells.rows.count,"B").End(xlup).Row


A zerowanie w sensie: ustawianie "wybierz"
- pewnie najprościej mniej więcej tak:
Kod:
range("D4").value = "~ wybierz ~"


Pozdrawiam,
_________________
Kaper

Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić.
ID posta: 147602 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

kati 
Starszy Forumowicz



Posty: 54
Wysłany: 2012-02-07, 07:31   

Kaper napisał/a:
A zerowanie w sensie: ustawianie "wybierz" - pewnie najprościej mniej więcej tak:
Kod:
range("D4").value = "~ wybierz ~"

Fakt, przyszlo mi to na mysl :-D ale nie bylam pewna czy to dziala tez przy listach wyboru. A ze napisalam zanim sprawdzilam, to i poszlo w eter

Mam za to inna zagwozdke. U nas w pracy komputery uzytkownikow sa wpiete w domenie. I domyslnie poziom zabezpieczen ustawiony jest na wysoki. A ze na 250 osob moze 10 jak widzi okienko dialogowe z pytaniem o uruchomienie makr wie o co chodzi, a jeszcze mniej wie, gdzie sie to modyfikuje, to mam problem.
Otoz. Jak wpisac makrem autouruchamianym przy otwieraniu pliku, zeby poziom makr byl na niski, a przy zamykaniu - wrocic do wysokiego. Da sie to tak?
K
ID posta: 147695 Skopiuj do schowka
 
 
Kaper 
Excel Expert



Pomógł: 1152 razy
Posty: 1626
Wysłany: 2012-02-07, 18:09   

no aż tak, to nie, bo skoro poziom jest wysoki to makro się nie uruchomi, prawda :-)

ale możesz "dać wyraźnie do zrozumienia", że włączona obsługa makr jest niezbędna.
Zobacz np.:
http://www.excelforum.pl/...highlight=wymus*+makr*
http://www.excelforum.pl/...highlight=wymus*+makr*
http://www.excelforum.pl/...highlight=wymus*+makr*
http://www.excelforum.pl/...kro-vt20913.htm

Inny pomysł - skoro "zbierasz ankiety" to może pliki z ankietami powinny być wolne od matk, a tylko potem wyniki poszczególnych ankiet przysłane przez tą setkę pracowników w 100 oddzielnych skoroszytach powinny być automatycznie zebrane przez makro i upchnięte do skoroszytu zbiorczego (i podsumowane w arkuszu zbiorczym).

Pozdrawiam,
_________________
Kaper

Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić.
ID posta: 147787 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

kati 
Starszy Forumowicz



Posty: 54
Wysłany: 2012-02-08, 07:19   

Kaper napisał/a:
no aż tak, to nie, bo skoro poziom jest wysoki to makro się nie uruchomi, prawda :-)

uhm :tak wlasnie tego sie obawialam, liczylam na jakis manewr w rodzaju 'tylnego wejscia' :roll:

Kaper napisał/a:
ale możesz "dać wyraźnie do zrozumienia", że włączona obsługa makr jest niezbędna

dzieki, poszukam czegos w temacie

Kaper napisał/a:
Inny pomysł - skoro "zbierasz ankiety" to może pliki z ankietami powinny być wolne od matk, a tylko potem wyniki poszczególnych ankiet przysłane przez tą setkę pracowników w 100 oddzielnych skoroszytach powinny być automatycznie zebrane przez makro i upchnięte do skoroszytu zbiorczego (i podsumowane w arkuszu zbiorczym).

No to :// w chole*e byloby tyle roboty dotychczas!
Nie no, smieje sie. Bralam to na samym poczatku pod uwage. To owszem bylaby jakas opcja, gdyby nie to, ze to wlasnie arkusze wynikow beda musialy byc drukowane i podpisywane przez kierownikow komorek merytorycznych, ktore wypelniaja ankiety. Wiec chyba nie mam zbyt duzego manewru ruchu..
Pozdr
Kaska
ID posta: 147835 Skopiuj do schowka
 
 
Kaper 
Excel Expert



Pomógł: 1152 razy
Posty: 1626
Wysłany: 2012-02-08, 17:41   

Czyli w ThisWorkbook (albo w tenskoroszyt :evil: ) coś w podobie do:

Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim wks As Worksheet
Application.ScreenUpdating = False
' tylko arkusz z komunikatem o konieczności zezwolenia na makra będzie widoczny po otwarciu
Worksheets("Start").Visible = xlVisible
For Each wks In Worksheets
  If wks.Name <> "Start" Then wks.Visible = xlVeryHidden
Next wks
End Sub

Private Sub Workbook_Open()
Call pokaz_arkusze
End Sub


A w zwykłym module coś w tym stylu:
Kod:
Sub pokaz_arkusze()
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wks In Worksheets
  wks.Visible = xlSheetVisible
Next wks
' ew. wybór aktywnego i ukrycie startowego
Application.ScreenUpdating = True
End Sub


Albo ta ostatnia procedura wewnątrz workbook_open

Pozdrawiam,
_________________
Kaper

Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić.
ID posta: 147925 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać 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 głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum