Spremenljivka v VB

Pomoč pri delu z MS Excelom
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Spremenljivka v VB

Odgovor Napisal/-a bate »

Zdravo,
pri delu se mi je pojavil problemček kako spremenljivki dodeliti vrednost iz določene celice.
Npr. v stilu:
...
Range ("J20").Select
Spremenljivka=J20
...
Še tole: rad bi se malo naučil VB. Ali morda obstaja kakšen gimnazijski učbenik?
lepo prosim za pomoč.

Lp, Brane
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Spremenljivka v VB

Odgovor Napisal/-a admin »

bate napisal/-a:...kako spremenljivki dodeliti vrednost iz določene celice....
Preprosto tako da združite oba stavka, ki ste ju napisali

Koda: Izberi vse

Spremenljivka = Range("J20")
bate napisal/-a: Še tole: rad bi se malo naučil VB. Ali morda obstaja kakšen gimnazijski učbenik?
Po mojem mnenju in odzivih nekaterih bralcev menim, da je v slovenskem jeziku najbolje izbrati kar mojo knjigo 'Visual Basic za aplikacije' (http://www.matjazev.net/pnew/index.php? ... k_vb1.html). Knjige na morete več kupiti, saj je razprodana imajo pa jo v vseh javnih knjižnicah.

V kolikor iščete tujo literaturo pa je je zares ogromno in si pač izberite katerokoli za začetnike.
lp,
Matjaž Prtenjak
Administrator
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Re: Spremenljivka v VB

Odgovor Napisal/-a bate »

Zdravo,
tako enostavno ,da mi je kar nerodno. Se zahvaljujem za odgovor.

lp Brane
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Re: Spremenljivka v VB

Odgovor Napisal/-a bate »

Zdravo,
spet jaz. Ne gre mi ta sintaksa...
Grem kar na problem-ček:
...
Fiks=Range("J23")
For Spremenljivka=6 to 150
If Spremenljivka=Fiks then
Range("Xspremenljivka").select
...

Tale rdeča mi 'kravžla' živce..
Lepo prosim pomagajte, upam, da bo potem delalo.
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Kaj naj bi ta koda sploh naredila?

Torej vi bi na ta način ugotavljali ali je V celici J23 zapisano eno izmed števil 6 do 150? In če je tu vmes in jo najdete potem bi izbrali celicio Xspremenljivka? Kaj pa je XSpremenljivka? Torej spodnja koda takšna kot je bi bila mnogo bolj smiselna v sledeči obliki:

Koda: Izberi vse

if (Range("J23") >= 6 and Range("J23") <= 150) Then
  Range(XSpremenljivka).select
End if
lp,
Matjaž Prtenjak
Administrator
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
meja kulpa...
pravzaprav sploh nisem obrazložil problema(čka). Se oproščam.
Naj poskusim še enkrat:

- na listu1 v celico 'J32' vnesem številko
- for zanka na drugem listu v koloni 'i6:i150' išče številko, ki ustreza celici ("j32") s prvega lista
- v vrstici kjer je najdena številka so podatki, ki jih želim vpisati (prekopirati na list1.
takole:
...
Fiks=Range("J32")
Sheet(list2).select
For Each spremenljivka In Range("i6:i150")
If spremenljivka=Fiks then
Range("Kspremenljivka:Tspremenljivka").select
Selection.Copy
end if
next spremenljivka
...
Sheet(list1).select
....

Ekola. Upam, da je bolj razumljivo. V bistvu se compiler pritožuje nad rdečo kodo. Ne vem, ali kaj manjka, ali je napačna sintaksa, ali kaj drugega.
upam, da ne težim...

lp Brane
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

Kot prvo, če želite kot argument funkcije Range podati neko spremenljivko jo morate zapisati brez narekovajev "".

Kje deklarirate spremenljivki Kspremenljivka in Tspremenljivka?

Obe morata biti deklarirani kot Range.
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
Kljuka, zahvaljujem se za odgovor. Vendar se mi compiler kljub popravkom še vedno pritožuje. Ali lahko malo bolj konkretno!?
Lepo prosim.

lp Brane
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

Verjamem, da se pritožuje. Še vedno nam namreč niste izdali, kako deklarirate tisti dve spremenljivki? :)
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
najbolje,da posnamem komplet, pa bomo videli...

Sub Vpis()
Fiks = Range("J28") ' List1
Sheets("List2").Select
For Each Podatek In Range("i6:i150")
If Podatek = Fiks Then
Range("Kpodatek:Tpodatek").Select
Selection.Copy
End If
Next Podatek

Sheets("List1").Select
Range("K30:T39").Select
ActiveSheet.Paste

End Sub

To je to. Compiler se pritožuje nad Range("Kpodatek:Tpodatek").select
Če vpišem namesto 'podatek' konkretno številko zadeva deluje!
lp Brane
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

:cry: Joj joj joj ... Kje pa deklarirate spremenljivki Kpodatek in Tpodatek?
To je tako, kot bi vam jaz rekel, povejte mi število, ki sem si ga zamislil. Niti približno se vam ne bi sanjalo, če vam ga jaz pred tem ne bi izdal. Torej, prevajalniku morate povedati, kaj predstavljata ti dve spremenljivki.
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
AndrejL
Prispevkov: 25
Pridružen: Po Nov 10, 2008 9:22 pm

Odgovor Napisal/-a AndrejL »

spremenite >>Range("Kpodatek:Tpodatek").Select<<

v

>>Range("K" & podatek.row &":T" & podatek.row).Select<<

mimogrede, če bi preučili funkcijo VLOOKUP, kot vam je predlagal matjaž v neki drugi temi, se vam s tem sploh ne bi bilo treba ukvarjati...
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
dragi Kljuka zahvaljujem se za vaš trud, a še zmerom ne vem kako naj deklariram. Ali spremenljivka 'podatek' ne dobi vrednosti v for stavku? Pri vsem svojem (ne)znanju ne pogruntam fore. Če se že trudite z mano, lepo prosim za bolj konkreten odgovor.

lepe praznike, Brane

ps: spoštovani Andrej. Tisto ne deluje.Lp.
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

OK. Včasih bolj namigujem (se sprehajam kot maček okoli vrele kaše) in poskušam, da bi sami nekako prišli do rešitve :)

Če preverjate vrednost neke celice, bi mogli zapisati

Koda: Izberi vse

Dim Fiks 
Fiks=Range("J28").Value ' List1 
Enako pri preverjanju

Koda: Izberi vse

If Podatek.Value = Fiks Then
Še predtem morate deklarirati spremenljivko Podatek

Koda: Izberi vse

Dim Podatek As Range
Ko želite označiti neko polje napišite

Koda: Izberi vse

Range(Podatek).Select
Če ta koda ne deluje poskusite: Podatek.Select



Upam, da vam bo to kaj pomagalo. Kaj več jutri (nimam pri roku Offica, zato je vsa koda pisana na pamet).
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Živjo,
Hvala za trud, a še vedno ne gre.
'Range(Stevec).Select' prevajalnik sploh ne požre. 'Stevec' je namreč stevec ; številka. Kolikor razumem mora biti v 'Range' neko območje!? Dim-al sem 'Podatek' in 'Stevec' in tudi ne dela.
Ko namesto 'Range("Kpodatek:Tpodatek").Select' napišem 'Range("K11:T11").Select' zadeva deluje! Nimam pojma kaj ga moti?

lp Brane
Odgovori