[ ramzesIV @ 06.12.2011. 09:39 ] @
kako da napisem makro da kad je u celiji E2: pa do last row,
da kad u celiji stoji index, da startuje jedan makro, a kad stoji benchmark, da startuje drugi makro.

ja pokusah nesto kao:

Code:
Sub Download()
 
Dim LastRow As String
Dim myrange As Range
Dim indexztr As String
Dim benchmark As String
 
LastRow = Cells(Cells.Rows.Count, "E").End(xlUp).Row

Set myrange = Range("E1:E" & LastRow)

If myrange = indexztr Then
    Indztrperf     

    Else
If myrange = benchmark Then

    Benchmarkperf

 End If
 End If

End Sub 
[ Brodoplovac @ 06.12.2011. 12:06 ] @
Aj probaj ovaj makro. Ja ga nisam probao kod sebe.


Sub Download()
Dim LastRow As Long

LastRow = Cells(Application.Rows.Count, 5).End(xlUp).Row

If Cells(LastRow,5) = "indexztr" Then
Indztrperf
ElseIf Cells(LastRow,5) = "benchmark" Then
Benchmarkperf
End If
End Sub
[ ramzesIV @ 06.12.2011. 13:30 ] @
odradi ali npr ako stoji indexztr onda otvori podatke, a ako stoji benchmark, ne.

ne startuje makro Benchmarkperf, vec samo Indztrperf
[ Brodoplovac @ 06.12.2011. 20:09 ] @
Kod mene radi. Koristim Excel 2010. Verovatno je problem što makro ne nalazi da su dve reči podudarne. Ovo je posledica toga što reč u ćeliji sadrži neke nevidljive znake tipa "space", Enter prelom, TAB. Evo ti malo liberarniji makro koji će pronalaziti slaganje čak i ako postoje ovi nevidljivi znakovi. Kod mene i ovaj makro radi.

Takođe proveri i da nemaš neke štamparske greške u spredšitu ili u nazivima makroa.


Sub Download()
Dim LastRow As Long

LastRow = Cells(Application.Rows.Count, 5).End(xlUp).Row

If Cells(LastRow, 5) Like "*indexztr*" Then
Indztrperf
ElseIf Cells(LastRow, 5) Like "*benchmark*" Then
Benchmarkperf
End If
End Sub
[ ramzesIV @ 07.12.2011. 09:29 ] @
greske nisu.
kad startujem pojedinacno pakro, rade, a kad startujem ovaj novi, samo nadje podatke prvog, drugog nece.

ne razumem u cemu bi mogla biti greska.

zasto radi pojedinacno svaki, a zajedno kad su nece?

kad kliknem prvi, dobijem podatke samo iz prvog makroa, ostatak mi prijavi kao gresku i obrnuto za drugi makro.



[Ovu poruku je menjao ramzesIV dana 07.12.2011. u 10:39 GMT+1]
[ Jpeca @ 07.12.2011. 09:53 ] @
Ako koristiš makroe, neophodno je da se upoznaš sa načinom debagovanja koda. http://www.elitesecurity.org/t287743-0#1741361

1/ U VBE postavi breakpoint na IF pa startuj makro.
2/ Kad se izvršavanje zaustvi na ovoj liniji sa F8 pređi na sledeću liniju. U tvom slučaju vrlo je bitno da li je sledeća linija Benchmarkperf ili ne
- Ako je Benchmarkperf idi dalje korak po korak i proveri zašto se taj makro ne izvrši kako valja.
- Ako je sledeća linija neka druga, proveri vrednosti LastRow kao i Cells(LastRow,5) u Immediate window:
Code:
?Cells(LastRow,5)




[Ovu poruku je menjao Jpeca dana 07.12.2011. u 11:03 GMT+1]
[ Brodoplovac @ 07.12.2011. 12:10 ] @
Aj uploaduj XLS fajl pa da vidimo šta je u pitanju.

Takođe još jednom objasni šta ti u stvari želiš. Da li želiš:
1) Da makro pronađe poslednju ćeliju u E koloni, da je pročita i da na osnovu nje pokrene odgovarajući makro.
2) Da staneš kursorom na neku ćeliju i da pokreneš makro. Makro pročita sadržaj date ćelije i na osnovu nje pokrene odgovarajući makro.
3) Makro krene od ćelije E2. Pročita njen sadržaj, odradi odgovarajući makro pa onda pređe na ćeliju E3. Tamo uradi isto pa onda pređe na E4 i tako do poslednje ćelije.
[ ramzesIV @ 07.12.2011. 13:07 ] @
kaze nije definisano, (keine variablen) i samo ucitava ovaj prvi makro.

lastrow 5 Long
izraz u kontekstu nije definisan!!

i preskace elseif i trazi podatke samo iz prvog makroa.


----

edit:

razlog je zato sto ova dva makroa iznova citaju podatke. i zato dobijam jedno te isti razultat.

to znaci prvo moram da korigujem ova dva makroa pa tek onda ce ovo funkcionisati.

[Ovu poruku je menjao ramzesIV dana 07.12.2011. u 14:38 GMT+1]
[ ramzesIV @ 12.12.2011. 16:54 ] @
evo konacno malo vremena da se vratim ovom:



pokusala sam da reorganizujem svoj makro, ali opet mi se podaci vracaju na pocetak.

ja hocu da ucitava a2, b2, c2 ako je e2=bm, pa onda e3=bm da ucitava a3,b3,c3, ...

jel neko moze da ispravi gresku:

Citat:
Sub Download()
Dim LastRow As Long
Dim LastColumn As Long
Dim val As String, st As String, ed As String, ID As String
Dim Ofs As Long



ActiveSheet.Range("I:ZZ").ClearContents
LastRow = 2
st = 2
ed = 2
ID = 2
LastColumn = 1

While True

val = Cells(LastRow, 5).Value
st = Cells(LastRow, 1).Value
ed = Cells(LastRow, 2).Value
ID = Cells(LastRow, 3).Value


If val = "ind" Then

GetIndexzeitreihe Range("A2"), Range("B2"), Range("C2"), Range("I1").Offset(0, Ofs)
ElseIf val = "bm" Then

GetBenchmark Range("A2"), Range("B2"), Range("C2"), Range("I1").Offset(0, Ofs)
ElseIf val = "" Then
Exit Sub
End If

LastRow = LastRow + 1
'st = st + 1
'ed = ed + 1
'ID = ID + 1
LastColumn = LastColumn + 3
Ofs = Ofs + 3

Wend

End Sub

[ ramzesIV @ 12.12.2011. 16:57 ] @
e da, da ne bude da nisam uradila pravilno.

ovo je makro pomocu kog ja hocu da startujem moja dva makroa. ako je potrebno postavicu i ta dva, ja reko' da bude preglednije.

[ FOX028 @ 12.12.2011. 17:29 ] @
Najbolje okaci Excel fajl, pa da vidimo u cemu je problem
[ ramzesIV @ 13.12.2011. 08:36 ] @
evo postavljen fajl. u njemu sam napisala ono sto bih htela.

nadam se da ce neko moci pomoci.
[ FOX028 @ 13.12.2011. 15:02 ] @
Odradio sam ti nesto i dodao ti novo dugme sa mojim kodom.
[ ramzesIV @ 13.12.2011. 15:49 ] @
prvo hvala na trudu.

kad startujem dobijem gresku kod prvog GetIndexzeitreihe (GetIndexzeitreihe Pocetak, Kraj, Simbol) - argument is not optional

ime mi ne treba. ovaj kod gleda samo pocetni, krajnji datum i simbol (ID). tako da sam ime stavila kao tekst.
[ FOX028 @ 13.12.2011. 17:14 ] @
Izvini moja greska, na pocetku

Code:
Sub GetIndexzeitreihe(ByVal StartDate As Date, ByVal EndDate As Date, ByVal Symbol As String, _
    ByVal DataRange As Range)


i

Code:
Sub GetBenchmark(ByVal StartDate As Date, ByVal EndDate As Date, ByVal Symbol As String, _
    ByVal DataRange As Range)


stavio sam


Code:
MsgBox "Pokrenuo IND"
    Exit Sub

MsgBox "Pokrenuo BM"
    Exit Sub


da proverim da li mi pokrece proceduru a da je ne izvrsava do kraja ali kad sam ti poslao zaboravio sam da izbrisem, izbrisi to i pozvace proceduru
a kolona gde sam stavio Ime mozes postaviti kao komentar ili izbrisati
[ ramzesIV @ 13.12.2011. 17:30 ] @
jel to sve u ovom excelu sto si ga postavio, jer ovde je samo stari makro.
[ FOX028 @ 13.12.2011. 17:45 ] @
jeste, videces razliku izmedju prethodnog i ovog, jedino kod mene sto javlja gresku kod ove naredbe

Code:
WinHttpReq.Send


ali kod tebe bi to trebalo da radi, verovatno je u pitanju nesto sto kod mene nema na racunaru
ali ono sto je vazno pokrece oba makroa u zavisnosti da li je ind ili bm i cita sve redove a ne samo prvi, to je postignuto u onoj Do Until . . . Loop petlji
[ ramzesIV @ 13.12.2011. 18:51 ] @
e izvini, call me crazy, call me insane, ali ja nigde ne vidim ovo

MsgBox "Pokrenuo IND"
Exit Sub

MsgBox "Pokrenuo BM"
Exit Sub

samo ovaj stari prethodni code u modul fox028 ili si negde drugo ubacio ove kodove?
[ FOX028 @ 13.12.2011. 19:01 ] @
pa u ovaj zadnji sto sam ti poslao sam izbrisao i onde gde pise IME stavio sam kao komentar:) imalo je u prethodnom
[ ramzesIV @ 13.12.2011. 19:15 ] @
pa na primer kad bi citala post kako bog zapoveda, mozda bi i znala da si izbrisao.

koji sam ja kre*en!!!

probacu sutra na poslu, pa cu javiti jel radi.

sorry.
[ ramzesIV @ 14.12.2011. 08:51 ] @
makro radi, ne prijavljuje nikakvu gresku, i zavrsi, ali nema output-a. ne downloaduje podatke od kolone I pa na dalje.
to je valjda taj DataRange.
hmmm???
[ FOX028 @ 14.12.2011. 09:15 ] @
ovo iz tvog macroa Download

Code:
Range("I1").Offset(0, Ofs)


ovo se nalazi kao argument u GetIndexzeitreihe i GetBenchmark za data range, sta si htela ovime postici?
A u tom istom delu za ostale argumente su ti definisana fiksna polja i normalno je da ti uzima vrednosti samo iz drugog reda.
[ ramzesIV @ 14.12.2011. 09:22 ] @
Od kolone I1 pa nadalje je krajnji cilj makroa.

znaci u koloni I je datum, pocevsi od startdate, do enddate, Koloni J su brojevi koji stoje iza koda iz C (ovo sto si nazavo simbol), pa onda koloni L opet datumi, Koloni m brojevi, ....

ja sam mislila da to definisem kao ime
Ime = Sheets("Indztrhperlists").Range("I1").Offset(0, Ofs)

i stavim Dim Ime as Range, Ofs as Long

ali ne radi tako
[ ramzesIV @ 14.12.2011. 09:40 ] @
eeeee

stavila sam ovako

GetIndexzeitreihe Pocetak, Kraj, Simbol, Range("I1").Offset(0, Ofs)
GetBenchmark Pocetak, Kraj, Simbol, Range("I1").Offset(0, Ofs)

i dobila rezulat. radi za sad ..

e FOX, ne znam sta drugo da ti kazem sem, hvala ti puno na pomoci....
[ FOX028 @ 14.12.2011. 09:41 ] @
pa normalno je onda da nece da radi u ovome sto sam ti poslao, jer ti u koloni I nemas nikakv podatak koji bi program uzimao.
imam jedan predlog za tebe mislim da bi ti bilo lakse da koristis Cells umesto Range (kao sto sam ja uradio u onom primeru sto sam ti poslao) za ovakav slucaj, preglednije je.

Ime = Sheets("Indztrhperlists").Cells(i,j)

i => redni broj reda
j => redni broj kolone npr. za kolonu A je 1, za B je 2 itd.

mislim da je lakse ovako kada koristis petlje sa nekim brojacem, to sam isto i ja uradio u mom primeru.
[ FOX028 @ 14.12.2011. 09:43 ] @
Dobro, znaci tako hoce da radi, ali razmisli malo o ovom mom prethodnom predlogu
[ ramzesIV @ 14.12.2011. 10:18 ] @
i onda da stavim
i=i+1
j=j+2

?

jos jedno pitanje. mogu li iz jednog excel fajla da startujem makro koji je snimljem u drugom fajlu.

npr u jedom fajlu napisem makro da otvori fajl sa ovim makroom, i da startuje ovaj makro sto si napisao.

ili moram da kopiram sve ovo u ovaj novi fajl.

ja napisem:

"Workbooks.Open Filename:....

FOX028"


ali dobijem da FOX028 nije definisano ili vec.
[ FOX028 @ 14.12.2011. 13:21 ] @
1. ako hoces da ti bude fiksirano za neki red/kolonu onda tu stvis redni broj te kolone/reda a za drugi argument stavis brojac (promenljivu)
npr

for i=1 to 5
msgbox cells(i,4)
next i

u ovom slucaju u msgbox-u ce ti se prikazati jedan za drugim vrednosti iz prvih pet celija iz kolone D

a ako bi koristila Do petlju onda bi stavila i=i+1 kao brojac

2. mislim da moze ali onda bi taj makro i dalje vazio za taj drugi fajl

ISPRAVKA POSTA
Sad sam siguran da moze odradio sam ti primer koji je u prilogu, u kodu sam ti napisao u komentarima sta kako radi. I da Macro koji pokreces u drugom dokumetnu vazi za njega.

[Ovu poruku je menjao FOX028 dana 14.12.2011. u 17:36 GMT+1]
[ ramzesIV @ 16.12.2011. 09:45 ] @
al se namucih dok skontah sve kako se radi...

:) :)

uglavnom funkcionise sad perfektno. ako bude nekih problema, ja se javljam ponovo!!
hvala na velikoj pomoci!!!!