konto usunięte

Temat: Problem z makro

Witajcie,

mam taki problem, którego nie potrafie rozwiazać. Otóż stworzyłem sobie arkusz, w którym znajdują się dane w kolumnie A8:B44. Są tam formuły zliczające ilość występownia danej liczby w kolumnie I9:I158. To działa pięknie.

Następnie te dane potrzebuję skopiować w inne miejsce i posortować malejąco. Gdy zaznaczę A8:B44, zrobię kopiuj, następnie wklej specjalnie (tylko wartości) działa bez problemu. Zaznaczony po skopiowaniu zakres M10:N46 mogę bez problemu posortować ręcznie i wszystko działa jak trzeba.

Z racji tego, ze potrzebuję to zautomatyzować postanowiłem zapisać ww czynności jako makro i wywoływać je naciśnięciem ikonki. Zapisuję wszystko po kolei, zatrzymuję zapis, nie ma błędów.

Natomiast po uruchomieniu tego zapisanego makro pojawia się komunikat : Invalid use of property. Ponizej załączam moje makro :

Sub Kopiowanie_i_sortowanie()
'
' Kopiowanie_i_sortowanie Makro
'

'
Range& VB_VarUserMemIdA8: B44VB_VarUserMemId '+Select
Selection Copy
ActiveWindow+SmallScroll Down .<= -39
Range& VB_VarUserMemIdM10VB_VarUserMemId '+Select
Selection+PasteSpecial Paste .<= xlPasteValuesVB_VarProcData Operation .<= _
xlNoneVB_VarProcData SkipBlanks .<= FALSEVB_VarProcData Transpose .<= FALSE
ActiveWindow+SmallScroll Down .<= -6
Application CutCopyMode <= False
ActiveWorkbook+Worksheets&VB_VarUserMemIdEmresi od 12 + kolor i 0 (60)VB_ _
VarUserMemId'+Sort+SortFields+Clear
ActiveWorkbook+Worksheets&VB_VarUserMemIdEmresi od 12 + kolor i 0 (60)VB_ _
VarUserMemId'+Sort+SortFields+Add Key .<= Range&VB_VarUserMemIdM10:M46VB_ _
VarUserMemId'VB_VarProcData SortOn .<= xlSortOnValuesVB_VarProcData Order .<= _
xlDescendingVB_VarProcData DataOption .<= xlSortNormal
Wend ActiveWorkbook+Worksheets&VB_VarUserMemIdEmresi od 12 + kolor i 0 (60)VB_ _
VarUserMemId'+Sort
+SetRange Range&VB_VarUserMemIdM10:N46VB_VarUserMemId'
+Header <= xlGuess
+MatchCase <= FALSE
+Orientation <= xlTopToBottom
+SortMethod <= xlPinYin
+Apply
ElseIf Wend
ActiveWindow+SmallScroll Down .<= -15
Range& VB_VarUserMemIdM10: N21VB_VarUserMemId '+Select
Selection Copy
ActiveWindow+SmallScroll Down .<= 84
Range& VB_VarUserMemIdK102VB_VarUserMemId '+Select
Selection+PasteSpecial Paste .<= xlPasteValuesVB_VarProcData Operation .<= _
xlNoneVB_VarProcData SkipBlanks .<= FALSEVB_VarProcData Transpose .<= TRUE
End Sub

I tu niestety poległem, czy ktoś jest w stanie pomóc mi i pokazać, jak to poprawic, by działało ??

Serdecznie dziękuję

Jacek

ps. po wyskoczeniu błędu podświetlony na czarno jest pierwszy wyraz Range, moze to pomoże ...Jacek Kapral edytował(a) ten post dnia 16.09.10 o godzinie 14:51
Bogdan Gilarski

Bogdan Gilarski www.excelperfect.pl
Perfect And
Practical

Temat: Problem z makro

Jacek, a na jakiej wersji Excela to nagrałeś?
Dla mnie to chińszczyzna a nie VBA - łłłłłups
Problem = makro realizujące (wg opisu) -> kopiuj -> wklej wartości -> coś tam sortuj/mieszaj -> itd -> jest raczej prosty, ale to co masz wklejone w poście jako kod, ja nie "panimaju". Chyba mnie coś, o zgrozo, skoro się nagrało ominęło :(

konto usunięte

Temat: Problem z makro

Jezus, my tu się do wstążek nie możemy przyzwyczaić, a microsoft zupełnie nowy język skryptowy zapodał do offica ?

This is maddness;)

Jacek, skądżeś to wziął ? Z przyszłośći ? Z innego wymiaru ?
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: Problem z makro

Chyba 2007 bo tam sortowanie nie jest realizowane za pomoca metody Sort, tylko obiektu SortFields co dosc mocno komplikuje pisanie kodu. Poza tym z tego co pamietam Excel wieszal mi sie gdy probowalem uruchomic makro sortujace w oparciu o Sort w Excelu 2007, wiec o kompatybilnosci nie ma tu co marzyc :-)

konto usunięte

Temat: Problem z makro

Witajcie :)

dziękuję za zainteresowanie tematem.

Śpieszę z odpowiedzią na Wasze pytania, historia zaczęła się w Excelu 2003 PL SP3, ten sam problem był, potem spróbowałem to zrobić w 2007 PL i chyba ten kod zamieściłem ... Pozostał jeszcze do sprawdzenia 2010, ale w tym momencie naszło mnie, że mając zainstalowane obie wersje (w oddzielnych katalogach) coś po cichu wykorzystuje wspólnie, wcale się tym nie chwaląc ...

Jest ta teoria wielce prawdopodobna znając działanie programó z M$ ... Cóż, pozostaje mi deinstalacja innych wersji niż 2003 i próba wykonania tego "skomplikowanego" działania ponownie.

No i jeszcze mamy Linuxa do testów (Ubuntu 10.04), może tam zadziała toto ?? Mam na myśli zapis makro i próbę jego wywołania ponownie ;)

Mogę raz jeszcze uruchomic sie w 2003, nagrać to makro i je zamieścić, tak będzie lepiej ??

Pozdrawiam,

Jacek
Bogdan Gilarski

Bogdan Gilarski www.excelperfect.pl
Perfect And
Practical

Temat: Problem z makro

Nie widziałem (choć powinienem) na oczy Ex 2010 :)
To co przedstawiłeś wcześniej, jako nagrany kod makra, ma się nijak do języka programowania VBA. Kupa bzdur, niezrozumiałych poleceń itd. Coś, i to tak na poważnie, jest nie teges. Wypadałoby to najpierw wyjaśnić, a potem jakoś problem pierwotny jakoś rozwiązać.

konto usunięte

Temat: Problem z makro

Witajcie ponownie ...

Problem się rozwiązał w wersji 2010, do której nie dotarłem wcześniej ... Oczywiście makro zapodane wcześniej wywala ten sam błąd, natomiast nagrane identyczne od nowa działa bez problemu. Ciekawe, co dolega poprzednim wersjom ??

Zamieszczam kod dla porównania, bo nie sądzę, że to się komuś przyda, jak jeden z kolegów napisał, banalne operacje ...

Oto kod :

Sub Makro1()
'
' Makro1 Makro
'

'
Range("A8:B44").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-42
Range("R12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Emresi od 12 + kolor i 0 ( (62)").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Emresi od 12 + kolor i 0 ( (62)").Sort.SortFields. _
Add Key:=Range("R12"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Emresi od 12 + kolor i 0 ( (62)").Sort
.SetRange Range("R12:S48")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("O20").Select
ActiveWindow.SmallScroll Down:=-3
Range("R12:S23").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=87
Range("K102").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub

Od razu widać, że kod jest czystszy i nie mam jakiś dziwnych wtrąceń ...

Raz jeszcze dziękuję i pozdrawiam serdecznie szanowne grono.

Jacek

konto usunięte

Temat: Problem z makro

Makro kopiujące wartości oraz sortujące malejąco może wyglądać tak (Twoje makro, ale bez zbędnych pozostałości po nagrywaniu):
Sub sortowanie()
Arkusz1.Range("A8:B44").Copy
Arkusz1.Range("M10:N46").PasteSpecial Paste:=xlPasteValues

ActiveWorkbook.Worksheets("Arkusz1").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Arkusz1").Sort.SortFields.Add Key:=Range("M10"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Arkusz1").Sort
.SetRange Range("M10:N46")
.Apply
End With

Application.CutCopyMode = False

End Sub


Ten kod z pierwszego postu to jest dopiero kosmos :)

konto usunięte

Temat: Problem z makro

Mateusz Mikulski:
Makro kopiujące wartości oraz sortujące malejąco może wyglądać tak (Twoje makro, ale bez zbędnych pozostałości po nagrywaniu):
Sub sortowanie()
Arkusz1.Range("A8:B44").Copy


Ten kod z pierwszego postu to jest dopiero kosmos :)


Tak też nie powinno.
Raz odwołujesz się do aktywnego, raz po nazwie, powtarzasz to samo wyrażenie po 10 razy.

Jak porządek to porządek.

Sub sortowanie()


Sub sortowanie()

With Arkusz1
.Range("A8:B44").Copy
.Range("M10:N46").PasteSpecial Paste:=xlPasteValues

With .Sort
.SortFields.Clear
.SortFields.Add Key:=.Range("M10"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange .Range("M10:N46")
.Apply
End With

Application.CutCopyMode = False
End With

End Sub



Ewentualnie na początku upewnić się że aktywny jest arkusz1 i wtedy with arkusz1 i kropki można wogóle wywalić.Maciek Głuszak edytował(a) ten post dnia 17.09.10 o godzinie 10:06
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: Problem z makro

A ja jeszcze dodam, ze to makro nie zadziala na Excelu 2003, dlatego tez na poczatku proponowalbym sprawdzenie wersji Excela i dwa osobne makra - po jednym dla kazdej wersji. Ewentualnie mozna zrobic obsluge bledow na wypadek gdyby user odpalil wersje Macka w Excelu 2003. Rozumiem, ze zalozenie jest takie, ze bedzie to Ex 2007-2010, ale piszac makra na lata trzeba sie 3mac zasad programowania defensywnego :-)).

konto usunięte

Temat: Problem z makro

Dziękuję bardzo wszystkim za zainteresowanie i podziwiam za wiedzę ;)

Jacek
Bartłomiej Dąbrowski

Bartłomiej Dąbrowski
analiza/przetwarzani
e danych

Temat: Problem z makro

Mariusz Jankowski: trzeba sie 3mac zasad programowania defensywnego :-)).

fajne określenie :)
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Problem z makro

No dobra, ale ktoś w końcu powie, co to był za kod, ten na początku? ;)

konto usunięte

Temat: Problem z makro

Witajcie,

no tego nie widaomo do końca, część VBA, ale potem to jakiś bug ...

Pozdrawiam,

Jacek

Następna dyskusja:

problem z makro




Wyślij zaproszenie do