Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[VBA Excel] Jak dopisać dodatkowe polecenie

Mintajoo 18 Oct 2011 15:19 1736 5
  • #1
    Mintajoo
    Level 10  
    Do tej pory miałem taki kod który dopisywał z arkusza "Wydawanie" kolumnę C do innego arkusza-wiersza "Wynik".
    Teraz chcę aby dodatkowo przenosiło kolumnę C dokładnie C4:C14 do arkusza np. Historie (nazwa Historia dla arkusza jest zastrzeżona) do następnego wolnego wiersza w arkuszu "Historie".
    Modziłem coś ale nic nie wychodzi. Za małe pojęcie o tym mam.

    Code: vb
    Log in, to see the code
  • #2
    adamas_nt
    Moderator of Programming
    Zdaje się, że TRANSPONUJ to funkcja tablicowa. Spróbuj (mogłem pomylić nazwy arkuszy)
    Code: vb
    Log in, to see the code

    Ale po mojemu powinno to być przepisanie wartości w pętlach...
  • #3
    Mintajoo
    Level 10  
    Coś nie mogę sobie z tym poradzić.

    Wygląda to tak na tą chwilę:
    Zapisują się dane w arkuszu "Historie" z arkusza "Wydawanie" kolumna C (C4:C14), ale za drugim razem i jak mam inne dane w arkuszu "Wydawanie" przekopiuje znów do arkusza "Historie" w następny wolny wiersz ale przy okazji zmienia wszystkie poprzednie wiersze i wstawia takie same dane jak były w ostatnim wierszu.
    Dodatkowo teraz nie przenosi do arkusza "Wynik", a miało przenosić do "Wynik" i do "Historie" te same dane tylko w arkuszu "Wynik" do konkretnego wiersza(i to działało) a do arkusza "Historie" zawsze w następny wolny wiersz.
  • #4
    adamas_nt
    Moderator of Programming
    A, to sorry. Tę linijkę masz OK
    .Range(.Cells(wiersz, "C"), .Cells(wiersz, "M")) = Application.Transpose(Sheets("Wydawanie").Range("C4:C14"))
    Zadeklaruj zmienną obiektową gdzieś na początku
    Set ark = Sheets("Historie")
    Dalej trzeba znaleźć pierwszy wolny w arkuszu "Historie" Np
    wrs=ark.Range("C65536").End(xlUp).Row+1

    I podstawić wg pierwszego kodu. Np
    ark.Range(ark.Cells(wrs, "C"), ark.Cells(wrs, "M")) = Application.Transpose(Sheets("Wydawanie").Range("C4:C14"))
    i na końcu
    Set ark=Nothing")

    Razem (nie testowane)
    Code: vb
    Log in, to see the code
  • #5
    Mintajoo
    Level 10  
    W sumie teraz tak namieszałem że nawet nie mogę nic wydać z arkusza "Wydawanie".

    Dla chętnych zamieściłem cały plik (ver.2007) tutaj-klik.

    ... i dziękuję za dotychczasową pomoc.
  • #6
    marcinj12
    Level 40  
    Dostałeś kod od Kolegi adams_nt, przepisz go chociaż dobrze:
    Code: vb
    Log in, to see the code

    Code: vb
    Log in, to see the code

    i
    Code: vb
    Log in, to see the code


    Po co wczytujesz - tu i w innych fragmentach kodu - wynik odpowiedzi z MsgBox do zmiennej Odp, skoro
    a. Nic potem z tym nie robisz,
    b. W przypadku wiadomości - informacji z jednym przyciskiem OK, wynik może być tylko jeden (kliknięcie OK)