Arkadiusz Sroczyński

Arkadiusz Sroczyński Informatyk, DarkIL
Daria
Szypura-Ratajczak

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Witam was,

Myślę nad stworzeniem sobie niewielkiej bazy która miała by polegać na czymś takim:

Arkusz "WPR"
3, może 4 komórki w które będę wprowadzał dane

Arkusz "BAZA"
Do tego arkusza będą przenoszone dane, analogicznie. np komórka A4 z arkusza WPR, do komór A1 w arkuszu baza, b4 do B1 itd. sęk w tym by wiersze były dopisywane, nie nadpisywane. tak więc w sumie zapis do An+1. Wszystko uruchamiane przyciskiem w arkuszu WPR.

Macie jakieś nietrudne do zrealizowania pomysły wykonania.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Takie makro jest proste, chyba,że nie dostrzegam jakiegoś haczyka.
Na początek zadam więc proste pytanie: zarówno arkusz WPR jak i BAZA znajdują się w tym samym skoroszycie Excela?
Arkadiusz Sroczyński

Arkadiusz Sroczyński Informatyk, DarkIL
Daria
Szypura-Ratajczak

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Tak, jeden skoroszyt. przy czym z "haczyków"
1 komórka - wprowadzanie danych
2 komórka - wyszukaj pionowo według wpisu z 1 komórki
3 komórka - wybór z listy rozwijanej
4 komórka - data

na chwilę obecną takie dane by wystarczyły.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Szczerze mówiąc - teraz już w ogóle nic nie rozumiem. Odniosę się więc do pierwszego postu:
- zakładam, że dane do wprowadzenia do arkusza Baza znajdują się w kolumnach A-D , począwszy od wiersza 4. Makro dopisujące te komórki na koniec arkusza Baza może wyglądać tak:

Public Sub Dopisz()
Dim OstatniaB As Long
Dim OstatniaW As Long
Dim i As Long
OstatniaB = Range("Baza!A" & Rows.Count).End(xlUp).Row
If OstatniaB = 1 And Range("Baza!A1") = "" Then OstatniaB = 1 Else OstatniaB = OstatniaB + 1
OstatniaW = Range("WPR!A" & Rows.Count).End(xlUp).Row

If OstatniaW < 4 Then Exit Sub
For i = 4 To OstatniaW
Range("Baza!A" & OstatniaB) = Range("WPR!A" & i)
Range("Baza!B" & OstatniaB) = Range("WPR!B" & i)
Range("Baza!C" & OstatniaB) = Range("WPR!C" & i)
Range("Baza!D" & OstatniaB) = Range("WPR!D" & i)
OstatniaB = OstatniaB + 1
Next i
End Sub
Arkadiusz Sroczyński

Arkadiusz Sroczyński Informatyk, DarkIL
Daria
Szypura-Ratajczak

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Dziękuje za odpowiedź ale nie do końca o to mi chodziło. Najwyraźniej nie do końca dobrze to przedstawiłem.

Dane wprowadzać będziemy w arkuszu "WPR" w komórki A4, B4 i C4 i po uruchomieniu makro dane z tych komórek mają trafić do arkusza"BAZA" - znajduje się w tym samym skoroszycie. W tym co już napisałaś w swoim makro Marzanno mają trafić do kolejnego wiersza, by nie nadpisywały poprzednich zapisów.

Resztę sobie dopiszę w inny sposób. ważne jest dla mnie to rozwiązanie obecnie.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

No i właśnie to robi moje makro - szuka ostatniego wiersza w arkuszu Baza i od następnego zapisuje to, co znajduje się w komórkach A4, B4, C4, D4, a potem - w kolejnych wierszach WPR do kolejnych wierszy Baza.

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Może cosik takiego wystarczy.

Sub Makro1()
'
' Makro1 Makro
' Makro zarejestrowane 2004-11-07, autor Łukasz
'

'
Range("A1").Select 'zaznaczenie komórki
Selection.Cut 'wycięcie danych
Sheets("Baza").Select 'przejście do drugiego arkusza
Range("A1").Select 'odnalezienie pierwszego wolnego wiersza
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste 'wklejenie danych
Range("A1").Select 'przejście na początek
Sheets("Wstawianie").Select
Range("A1").Select
End Sub

Nazwy arkuszy i zakresy sobie dostosujesz.
Jedna uwaga: z uwagi na prostotę makra w arkuszu docelowym w komórki A1 i A2 nie mogą być puste.
Arkadiusz Sroczyński

Arkadiusz Sroczyński Informatyk, DarkIL
Daria
Szypura-Ratajczak

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

W przypadku makra Marzanny kopiowane zostają wierszę od A4 do D10. A zależało by mi na wybranych komórkach.
W przypadku makra Jana w arkuszu baza zostaje zaznaczona ostatnia komórka w kolumnie A i wysypuje błąd.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Jeżeli ma być kopiowany tylko 4 wiersz - to wystarczy skrócić makro:

Public Sub Dopisz()
Dim OstatniaB As Long
OstatniaB = Range("Baza!A" & Rows.Count).End(xlUp).Row
If OstatniaB = 1 And Range("Baza!A1") = "" Then OstatniaB = 1 Else OstatniaB = OstatniaB + 1

Range("Baza!A" & OstatniaB) = Range("WPR!A4" )
Range("Baza!B" & OstatniaB) = Range("WPR!B4")
Range("Baza!C" & OstatniaB) = Range("WPR!C4")
Range("Baza!D" & OstatniaB) = Range("WPR!D4")
End Sub
Arkadiusz Sroczyński

Arkadiusz Sroczyński Informatyk, DarkIL
Daria
Szypura-Ratajczak

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

To działa dokładnie tak jak tego chciałem. może za dużo wymyślam :) ale istnieje możliwość zablokowania operacji kopiowania i wyświetlenia informacji (może być w jakiejś komórce) że jedno z tych pól jest puste? wszystkie muszą być wypełnione

edit.
Czy istnieje możliwość by po skopiowaniu danych makro posortowało jedną kolumnę od najnowszego wpisu do najstarszego? chodzi o to by ten nowy był zawszę wyżej. oczywiście tak by dane w kolumnie obok nadal były przypisane odpowiednio do komórek sortowanych.Ten post został edytowany przez Autora dnia 29.01.16 o godzinie 23:03

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Arkadiusz S.:
W przypadku makra Marzanny kopiowane zostają wierszę od A4 do D10. A zależało by mi na wybranych komórkach.
W przypadku makra Jana w arkuszu baza zostaje zaznaczona ostatnia komórka w kolumnie A i wysypuje błąd.

Nie zastosowałeś się do uwagi jaką wpisałem, stąd ten błąd.
Tak czy inaczej rozwiązanie Marzanny jest w Twoim przypadku skuteczniejsze.

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Arkadiusz S.:
To działa dokładnie tak jak tego chciałem. może za dużo wymyślam :) ale istnieje możliwość zablokowania operacji kopiowania i wyświetlenia informacji (może być w jakiejś komórce) że jedno z tych pól jest puste? wszystkie muszą być wypełnione

edit.
Czy istnieje możliwość by po skopiowaniu danych makro posortowało jedną kolumnę od najnowszego wpisu do najstarszego? chodzi o to by ten nowy był zawszę wyżej. oczywiście tak by dane w kolumnie obok nadal były przypisane odpowiednio do komórek sortowanych.

Jeśli wartość w jednej z kolumn jest rosnąca lub malejąca to można.
Uruchom autofiltr i nagraj makro z sortowaniem - nagraną "treść" wklej do makra Marzanny i po sprawie.

Temat: makro excel - budowanie bazy przez uzupełnianie kolejnych...

Jan N.:
Arkadiusz S.:
To działa dokładnie tak jak tego chciałem. może za dużo wymyślam :) ale istnieje możliwość zablokowania operacji kopiowania i wyświetlenia informacji (może być w jakiejś komórce) że jedno z tych pól jest puste? wszystkie muszą być wypełnione

edit.
Czy istnieje możliwość by po skopiowaniu danych makro posortowało jedną kolumnę od najnowszego wpisu do najstarszego? chodzi o to by ten nowy był zawszę wyżej. oczywiście tak by dane w kolumnie obok nadal były przypisane odpowiednio do komórek sortowanych.

Jeśli wartość w jednej z kolumn jest rosnąca lub malejąca to można.
Uruchom autofiltr i nagraj makro z sortowaniem - nagraną "treść" wklej do makra Marzanny i po sprawie.
Oczywiście nie autofiltr - tylko zwykłe nagranie makra z sortowaniem.

Następna dyskusja:

Excel - makro do kopiowani ...




Wyślij zaproszenie do