[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

capone
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 12 gru 2015, o 19:56
Płeć: Mężczyzna
Lokalizacja: Polska

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: capone »

Witam,
Potrzebuję wykonać pewnie niezbyt trudne makro, ale utknąłem w martwym punkcie.

Chcę, aby makro po kliknięciu przycisku wykonało nastepujące operacje:
1. przejdź do komórki H1 w arkuszu1 i skopiuj wartość.
2. wartość z H1 jest jednocześnie wartością do wklejenia w arkuszu2 w kolumnie A oraz wyznacznikiem wiersza, w którym wartość ma być wklejona.
3. wróć do arkusza1 pobierz wartość z komórki C2 i wpisz ją w arkusz2 do komórki w kolumnie B w rzędzie równym wartości komórki H1 w arkuszu1.
4. wróć do arkusza1 pobierz wartość z komórki D3 i wpisz ją w arkusz2 do komórki w kolumnie C w rzędzie równym wartości komórki H1 w arkuszu1..
5.Wydrukuj pierwszą stronę z arkusza1 i zapisz zmiany w całym pliku excela. (pozostaw plik otwarty)

Zacząłem i mam tyle:

Kod: Zaznacz cały

Sub zapisuj()
Range("H1").Select
gdzie = ActiveCell.Value
Worksheets("arkusz3").Select
Range(ActiveCell.Value, 1).Value = ActiveCell.Value

End Sub
ale nie mam pojęcia dlaczego Debuger nie trawi mojej ostatniej linijki

Pomóżcie.
Ostatnio zmieniony 24 gru 2015, o 08:44 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
PiotrowskiW
Użytkownik
Użytkownik
Posty: 649
Rejestracja: 14 lis 2011, o 20:59
Płeć: Mężczyzna
Lokalizacja: Wojkowice
Podziękował: 26 razy
Pomógł: 67 razy

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: PiotrowskiW »

Wydaje mi się, ze zamiast Range w linii 5. ma być Cells aby to robiło to czego teraz nie robi.
Pomijając to wszystko, czy tu nie ma błędu (logicznego?!), bo wiersze i kolumny numeruje się od 1, tymczasem pusta komórka h1 oznacza zero...
Ostatnio zmieniony 12 gru 2015, o 21:37 przez PiotrowskiW, łącznie zmieniany 1 raz.
capone
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 12 gru 2015, o 19:56
Płeć: Mężczyzna
Lokalizacja: Polska

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: capone »

Nie przepuszcza.
a4karo
Użytkownik
Użytkownik
Posty: 22210
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3755 razy

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: a4karo »

Wskazówka: nagraj sobie to makro i zobacz jak wygląda kod
capone
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 12 gru 2015, o 19:56
Płeć: Mężczyzna
Lokalizacja: Polska

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: capone »

oczywiście tak zrobiłem i nie zadawałbym tego pytania, gdyby nie małe ale: nie mogę nagrać makra, które będzie uzależniało numer wiersza docelowego od wartości komórki w arkuszu1.

a kod z nagranego jak zmieniam, to tez nie działa
a4karo
Użytkownik
Użytkownik
Posty: 22210
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3755 razy

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: a4karo »

A na co wskazuje ActiveCell po linii 4?
Może 5 lepiej napisać

Kod: Zaznacz cały

Worksheets("arkusz2").cells(gdzie,1).value=gdzie
Ostatnio zmieniony 13 gru 2015, o 10:31 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi code.
capone
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 12 gru 2015, o 19:56
Płeć: Mężczyzna
Lokalizacja: Polska

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: capone »

nie, ale już doszedłem, że dla liczb będzie działalo Value2 a nie Value - jeszcze nie zgłębiłem w czym różnica.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: SlotaWoj »

capone pisze:oczywiście tak zrobiłem i nie zadawałbym tego pytania, gdyby nie małe ale: nie mogę nagrać makra, które będzie uzależniało numer wiersza docelowego od wartości komórki w arkuszu1.

a kod z nagranego jak zmieniam, to tez nie działa
Nagraj makro, a później zmodyfikuj instrukcje wyboru przed wstawianiem tak:

Kod: Zaznacz cały

    Range("H1").Select
    H1Value = Selection.Value
    Selection.Copy
    Sheets("Arkusz2").Select
    Range("A" & H1Value).Select
    ActiveSheet.Paste
    ...    
OShon
Użytkownik
Użytkownik
Posty: 65
Rejestracja: 4 mar 2014, o 00:32
Płeć: Mężczyzna
Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
Podziękował: 1 raz
Pomógł: 7 razy

[VBA][Excel] makro kopiujące komórkę z arkusza1 do arkusza2

Post autor: OShon »

Nagrywanie makr to tylko gra wstępna. Nagrywarka rejestruje dokładne kroki, których w większości nie są wam potrzebne. Usunięcie poleceń takich jak Select czy Activete jest niezbędne, ponieważ opóźnia to realizację kodu przez "miganie". Należy tego uniknąć.

Zasada jest prosta. Kopiowanie może być realizowane na 2 sposoby.
Pierwszy to polecenie Copy, które korzysta z pamięci i umożliwia kopiowanie większych obszarów.

Kod: Zaznacz cały

Sheets("Arkusz2").Range("D7").Copy Sheets("Arkusz1").Range("B5")
Drugie to przypisanie danych z jednego miejsca do drugiego, gdzie w tym przypadku 1:1 będzie szybsze.
Tutaj wg głównej zasady prawa strona równania to źródło, a lewe to miejsce docelowe.

Kod: Zaznacz cały

Sheets("Arkusz1").Range("B5") = Sheets("Arkusz2").Range("D7")
Obydwa kody realizują ten sam cel. Proszę dostosować sobie do swoich potrzeb.
Następnym etapem wtajemniczenia to deklaracje zmiennych i zmiennych obiektowych. Tworzenie wiązań i pętli aby takie kopiowanie realizować seryjnie. Zainteresowanych zapraszam.
ODPOWIEDZ