Excel, makra - nie wiem jak zmienić :-/

04.06.05, 13:44
Witam,
mam makro:

Sub dodaj()
'
' dodaj Makro
Sheets("wynik").Select
Range("B2:B24").Select
Selection.Copy
Sheets("zestawienie").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub

Dotyczy ono ankiety.
Wyniki ostatniej wprowadzonej ankiety są zbierane w arkuszu "zestawienie"; a
następnie mają być kopiowane do arkusza wynik.
Zadaniem tego makra ma być przekopiowanie wyników poszczególnych ankiet; tak,
żeby pierwsza zaczynała się w B3; a następna wskleiła się wiersz niżej...
słowem, żebym po wprowadzeniu np. 10 ankiet, w arkuszu "wynik" miała zapisane
odpowiedzi tych 10 osób.

Domyślam się, że zmianę należy wprowadzić w linijce:
Range("B3").Select
ale już kombinowałam z "offline" i jakoś nie idzie :/, "range(b3:b13).select"
też nie robi tego o co mi chodzi

Mogę liczyć na jakieś wskazówki??
    • dx7 Re: Excel, makra - nie wiem jak zmienić :-/ 04.06.05, 14:06
      Prosciej byloby chyba tak:

      Sub dodaj()

      Worksheets("wynik").Range("B2:B24").Copy Destination:=Worksheets _
      ("zestawienie").Range("B3")

      End sub
      • ixtlilto Re: Excel, makra - nie wiem jak zmienić :-/ 04.06.05, 16:04
        Nie działa :/
        • dx7 Re: Excel, makra - nie wiem jak zmienić :-/ 04.06.05, 17:33
          Musi dzialac - sprawdzalem osobiscie. Moze cos zle wpisalas? Jaki komunikat
          bledu?
          • ixtlilto Re: Excel, makra - nie wiem jak zmienić :-/ 04.06.05, 17:45
            Ale u mnie nie działa :)
            Błąd nie wyskoczył, poprostu nie działa tak jak ma działać, tzn: po wpisaniu
            danych z kolejnej ankiety wkleiły się one w to samo miejsce, a mają być wpisane
            w wiersz niżej...

            Wiesz co? Może podeślę Ci tą moją ankietę? ;)
            • dx7 Re: Excel, makra - nie wiem jak zmienić :-/ 04.06.05, 20:50
              Ok - tylko napisz co ma sie gdzie kopiowac :)
    • Gość: abc2005 Re: Excel, makra - nie wiem jak zmienić :-/ IP: *.petrus.com.pl 04.06.05, 21:18
      Nie wiem czy dobrze zrozumiałem na czym polega Twój problem.
      1. W arkuszu [wynik] w komórkach B2:B24 masz dane z ankiety 1
      2. kopiejesz te dane do arkusza [zestawienie]zaczynając od komórki B3 czyli do
      komórek B3:B25?
      3. W arkuszu [wynik] w komórkach B2:B24 wpisujesz dane z ankiety 2
      4. chcesz, aby były one skopiowane do arkusza [zestawienie]do B26:B48
      5. itd - powtarzasz te czynności dla pozostałych n ankiet?
      • ixtlilto Re: Excel, makra - nie wiem jak zmienić :-/ 05.06.05, 14:12
        Gość portalu: abc2005 napisał(a):

        > 1. W arkuszu [wynik] w komórkach B2:B24 masz dane z ankiety 1
        Tak


        >2. kopiejesz te dane do arkusza [zestawienie]zaczynając od komórki B3 czyli do
        >komórek B3:B25?
        B3:X3 (transpozycja)


        > 3. W arkuszu [wynik] w komórkach B2:B24 wpisujesz dane z ankiety 2
        Tak


        > 4. chcesz, aby były one skopiowane do arkusza [zestawienie]do B26:B48
        nie, do B4:X4

        > 5. itd - powtarzasz te czynności dla pozostałych n ankiet?
        no dokładnie :)
    • Gość: abc2005 Re: Excel, makra - nie wiem jak zmienić :-/ IP: *.petrus.com.pl 05.06.05, 18:38
      Proponuje takie makro:
      Sub ankieta()
      startuj:
      ' zbieram wyniki
      Range("B2").Select
      For n = 1 To 23
      komunikat = "Wpisz wynik nr " & n
      ' jeżeli wynik nie jest liczbą musisz zmienić Type!
      ile = Application.InputBox(komunikat, "Wpisz wyniki testu", "", Type:=1)
      ActiveCell.FormulaR1C1 = ile
      ActiveCell.Offset(1, 0).Range("A1").Select
      Next
      'kopiuje obszar wyników
      Range("B2:B24").Copy
      Sheets("zestawienie").Select
      ' ustawia pierwszą wolną i wkleja transpozycję
      ' patrz uwagi
      Range("B1").Select
      Selection.End(xlDown).Select
      ActiveCell.Offset(1, 0).Range("A1").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=True
      Range("B1").Select
      'powrót do arkusza wynik i wyczyszczenie danych
      Sheets("wynik").Select
      Range("B2:B24").ClearContents
      ' wprowadzić następne?
      Style = vbYesNo + vbCritical + vbDefaultButton1
      decyzja = MsgBox("Czy wprowadzasz następną ankietę?", Style, "Wprowadzanie
      wyników")
      If decyzja = vbYes Then GoTo startuj

      ' zapis i zakończenie wprowadzania
      koniec:
      ActiveWorkbook.Save
      MsgBox "Dziękuję!" + Chr(13) + "Plik został zapisany"

      End Sub
      Uwaga!!!
      Aby makro działało komórki B1 i B2 w arkuszu "zestawienie" nie mogą być puste!
      Makro wybiera komórkę B1, następnie znajduje ostatnią zajętą w kolumnie B i
      przesuwa się o 1 wiersz w dół. W ten sposób znajduje pierwszą wolną komórkę do
      przekopiowania wyników.
      Jeżeli Twoje wyniki nie są liczbami to musisz zmienić type:=1 na 2
      Jak będziesz miał problemy napisz mail adam77s@o2.pl to załączę arkusz.
      • dx7 Re: Excel, makra - nie wiem jak zmienić :-/ 05.06.05, 19:27
        Moje jest troche prostsze ale generalnie podobne, z tym ze samo sprawdza ktory
        nastepny wiersz jest wolny :)

        Sub Dodaj()
        Dim f As Integer
        Dim wolna As Integer
        Dim exit_sub As Boolean
        exit_sub = False
        'sprawdzamy ktory nastepny wiersz jest wolny (na podstawie kolumny B)
        For f = 3 To 500
        With Worksheets("zestawienie").Cells(f, 2)
        If .Text = "" Then
        If exit_sub = False Then
        wolna = f
        End If
        exit_sub = True
        End If
        End With
        Next f
        ' kopiujemy komorki
        For f = 2 To 24
        Worksheets("zestawienie").Cells(wolna, f).Value = Worksheets("wynik").Cells _
        f, 2).Text
        Next f
        End sub
        • ixtlilto Re: Excel, makra - nie wiem jak zmienić :-/ 05.06.05, 19:55
          Erm.. zaraz sprawdzę czy i jak działa to co mi napisaliście; ale ponawiam
          pytanie: nie da się tego pierwszego makra jakoś zmodyfikować? Bo ono jakoś tak
          prościej od tych waszych wygląda :)
          • dx7 Re: Excel, makra - nie wiem jak zmienić :-/ 05.06.05, 23:14
            Chyba nie da sie go zmodyfikowac bo ... chcesz przeniesc zawartosc komorek
            B2:B24 do B3:X3 a wiec komorki w pionie chcesz przeniesc do wiersza w poziomie.
            Sprawdz program, ktory Ci wyslalem - powinien zalatwic sprawe :)
    • Gość: abc2005 Re: Excel, makra - nie wiem jak zmienić :-/ IP: *.petrus.com.pl 05.06.05, 20:34
      Jeszcze raz.
      Można uprościć wstawiając te trzy linijki kodu zawarte miedzy ========:
      Sheets("zestawienie").Select
      '===========================
      Range("B1").Select
      Selection.End(xlDown).Select
      ActiveCell.Offset(1, 0).Range("A1").Select
      '==========================
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=True

      ustawiają one pierwszy wolną komórkę w kolumnie B - w pierwszym wolnym wierszu
      do wklejenia wyników.

      To co Ci zaproponowałem ułatwia także wpisywanie wyników z ankiet. Co Ci
      przeszkadza kilka linijek kodu więcej? Tracisz milisekundę a zyskujesz
      kilkanaście sekund na wklepywaniu danych!
      • ixtlilto Re: Excel, makra - nie wiem jak zmienić :-/ 05.06.05, 20:49
        Gość portalu: abc2005 napisał(a):

        > To co Ci zaproponowałem ułatwia także wpisywanie wyników z ankiet. Co Ci
        > przeszkadza kilka linijek kodu więcej? Tracisz milisekundę a zyskujesz
        > kilkanaście sekund na wklepywaniu danych!
        Tyle, że projekt ankiety już mam opracowany. Bo w niektóych pytaniach można
        zaznaczyć więcej niż jedną odpowiedź, a Twój system już tego nie obejmuje ;)
        Wyniki ankiet muszą być (wymóg zaliczenia zadania) wpisywane przy
        użyciu "przycisk opcji", "pole grupy" i "pole kombi"; poza tym dzięki nim nie
        musze wpisywać, że respondent pracuje w dziale "przemysłowym"; tylko wybieram
        sobie to pole z listy.
        Ale chętnie na spokojnie przeanalizuję Twoje makro, bo taki sposób też mi się
        podoba. Bo przy odpowiedziach liczbowych jest on rzeczywiście szybszy.
Pełna wersja