Avko | 01.06.2015 13:34 |
---|---|
Predmet:Table Excel VBA U excelu mozemo odrediti Table1, Table2... To su tabele u koje mozemo staviti odredene sheet(listove) ili dijelove listova npr. Table1 = Sheets("List2").Range("C5:G5") 'u Table1 stavili smo iz List2 rang od C5 do G6, znaci celije C5,D5,E5,F5,G5 i C6,D6,E6,F6,G6 Table2=Sheets("List3").Range("A1:B10") - u Table2 stavili iz List3 rang A1:B10 pitanje: Kada radim sa tabelama sve radim sa userform1 ili sa List1, mene zanima kako trebam ispravno napisati naredbu da mi uzima Cells(1,1) iz Table1, a ne kao meni uzme Cells(1,1) sa List1 ja sam napisao nesto ovako: UserForm1.ListBox1.AddItem Cells(red, stupac) i on meni uzme iz List1 celiju(1,1) probao sam Table1.Cells(1,1) ali ne prihvaca to vazno je napomenuti da ce Table2 mijenjati po listovima, nekad ce biti List3 a nekad List4,List5 ovisi Table1 uzme vrijednost neke celije pa onda na osnovu toga odredim Table2 i izvrsim Application.WorksheetFunction.VLookup(vrijednost, Table2, 2, False) neznam jesam dobro objasnio problem? |
zxz | 01.06.2015 21:41 |
---|---|
Predmet:Re: Table Excel VBA Ja nemogu bas da dokucim sta ti je cilj. Ako ti nije tesko da stavis neki primjer i napises sta zelis da iscitas. |
Avko | 02.06.2015 01:21 |
---|---|
Predmet:Re: Table Excel VBA sve sam ovo napisao u modulu1 kao klasicni basic sa jednom procedurom sub proba end sub u njemu nisam imao formu i nisam koristio procedure u drugim modulima nego sam klasicno pozivao potprograme postupkom gosub pot1, ili gosub pot2 itd znaci klasicni kod basica i to je radilo. Problemi su nastali kada sam htio pisati kod kao u vb6 sa procedurama i modulima |
|
Prilozi: proba.rar (Velicina datoteke:35.10 KB) |
zxz | 02.06.2015 11:44 |
---|---|
Predmet:Re: Table Excel VBA Ja ovdje ne vidim nista sto ti nisi mogao uraditi ili mozda ne vidim tvoju koncepciju. Mnogo si ti toga naucio da bi se lomatao sa exelom i user formama. Bolje da si ovo radio u klasicnom Vb i sa nekom bazom napr. mdb. Znaci podaci idu u neku mdb bazu a forme i ostalo pravis u Vb-u. Jedna mala zamjerka ovdje sto si pravio ovo je sto si podatke izbacio u list box a bolje je u neki grid. Mozes dodati desnim klikom na Talbox. E sad sto ja mislim da ti nedostaje. Nemoj se ljutiti ako si vec nesto znao jer ja to samo pretpostavljam. 1-Objekti. Ti ovdje imas podignute dvije app. i to ecel Workbook i VbUserform. Znaci to su dva razlicita objekta. Ukoliko ih ne setujes nemozes komunicirati sa njim sem u njihovoj unutresnjosti. za Workbook to su sitovi i komandni taster koji si postavio a za UserForm to cu combo boxovi. Sitovi mogu imati i svoje module. Ukoliko pises u tim modulima procedure one imaju doseg tog objekta a ne u cijeloj app. ukoliko otvoris neki Modul napr. module1 u njega mozes pisati procedure koje imaju doseg (domet) na nivou cijele tvoje app. znaci mozes procedure pozivati od bilo gdje. E sad ima tu jos nesto a to je doseg same procedure a to imas lijepo opisanu u vb skoli. doseg- dokle doseze odakle je mozes pozvati Ukoliko pisemo: sub Imeprocedure (parametar1,parametar2) sub- znaci da joj je doseg samo u okviru tog objekta odnosno toog modula. Ukoliko napisemo: Public Imeprocedure (parametar1,parametar2) sada ima doseg u cijeloj app. Ukoliko ne napisemo nikakav prefiks sto ja cesto radim onda ce isto imati domet u cijeloj app. Ja obicno tako pisem na forum pa ostavljam korisniku da stavi sta hoce odnosno da prilagodi sebi. to bi izgledalo ovako: Imeprocedure (parametar1,parametar2) da bi iz procedure dosegli do nekog objekta moramo ga setovati. Kada setujemo objekat onda nam je prepoznatljiv kao i kontrole na njemu u nasem jednom slucaju to su siti a u drugom na formi to su combo boksovi i drugo. Eto nadam se da sam malo pomogao. Ukoliko se nigdje zapeo tacno na odredjenom mjestu u kodu onda naznaci to mjesto pa cemo nadam se rijesiti. |
Avko | 02.06.2015 12:29 |
---|---|
Predmet:Re: Table Excel VBA hvala na odgovoru danas sam citao vb (dosao do strane 7) i vidio da ima o procedurama i for each petlji takode sam malo proucavao prilog od NedimZ. Zakljucio sam da je najbolje da pocnem uciti access, a to mi je vec prije rekao gjoreski. Od ovoga cu odustati jer je samo gubljenje vremena, a nista pametno necu nauciti. ovo mi nije jasno: Ti ovdje imas podignute dvije app. i to ecel Workbook i VbUserform. , trenutno kad citam no kada cu malo proanalizirati bice mi jasnije. Ne treba objasnjavat. a ovo mi je jasno: Ukoliko pisemo: sub Imeprocedure (parametar1,parametar2) sub- znaci da joj je doseg samo u okviru tog objekta odnosno toog modula. Ukoliko napisemo: Public Imeprocedure (parametar1,parametar2) sada ima doseg u cijeloj app. Ukoliko ne napisemo nikakav prefiks sto ja cesto radim onda ce isto imati domet u cijeloj app. do sada sam koristio public varijabla i mislio sam da time imam doseg u cijeloj app a i jesam, no nisam znao i da procedure mogu biti public, mada sam to procitao u VB skoli i moja je greska sto nisam zapamtio. Odlicno objasnjenje. 5+ sjedi |
Avko | 07.06.2015 14:11 |
---|---|
Predmet:Re: Table Excel VBA Citiraj zxz: ovo mi sa setovanjem uopce nije jasno
sada sam usljed istrazivanja nesto pobrkao tako da mi umjesto Range automatski promijeni na range (veliko slovo u malo) Nemogu napisati u List1.code da mi selektira rang iz List2 tj dim celija as range dim rang as range set rang=sheets("List2").Range("C2:H2") For Each celija in rang if celija='neki uvjet' then kod end if next celija |
zxz | 07.06.2015 14:47 |
---|---|
Predmet:Re: Table Excel VBA Citat: ovo mi sa setovanjem uopce nije jasno kada nesto setujes(neki object) znaci da si ga registrovao i moze poslije trazizi bilo kakave podatke o njemu. Citat: Negdje imas u kodu tip variable upisan malim rangesada sam usljed istrazivanja nesto pobrkao tako da mi umjesto Range automatski promijeni na range (veliko slovo u malo) Dim celija As Object Dim rang As Range Set rang = Sheets("List2").Range("C2:H2") For Each celija In rang If celija.Value = "neki uvjet" Then 'kod End If Next celija moras reci sta hoces od celije koji podatak. U tvom slucaju vrijednost vjerovatno. |