Centar za edukaciju-BiH


Stranice (2):1,2

#1 22.12.2016 23:33
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:kretanje po stupcima uz pomoc for next petlje
imamo ovu funkciju (autor zxz)

PreuzmiIzvorni kôd (Text):
  1. Function ZadnjiRed(ImeSita As String)
  2.     Dim Zadnji As Long
  3.     Dim ws As Worksheet
  4.    
  5.     Set ws = Sheets(ImeSita)
  6.     With ws
  7.         Zadnji = .Cells(.Rows.Count, "A".End(xlUp).Row =>OVO SLOVO A BI SE TREBALO MIJENJATI OVISNO O KOLONI U KOJOJ SE NALAZIM
  8.     End With
  9.     ZadnjiRed = Zadnji
  10. End Function

pozivajuci tu funkciju dobijamo zadnji red sa podacima u odredenom stupcu, npr.
endRed=ZadnjiRed("List1")
endRed ce biti neki broj, ovisno o tome u kojem se redu nalazi zadnji podatak.
e sada, ja sam upotrebio i drugu funkciju:

PreuzmiIzvorni kôd (Text):
  1. Function ZadnjaKolona(ImeSita As String)
  2. Dim Zadnji As Long
  3. Dim ws As Worksheet
  4.  Set ws = Sheets(ImeSita)
  5.     With ws
  6.         Zadnji = .Cells(1, .Columns.Count).End(xlToLeft).Column
  7.     End With
  8.     ZadnjaKolona = Zadnji
  9. End Function

koja mi daje zadnju kolonu sa podacima, npr.

endKolona=ZadnjaKolona("List1")

sada bi ja upotrebio to u petlji

PreuzmiIzvorni kôd (Text):
  1. for startKolona=1 to endKolona
  2.          endRed=ZadnjiRed("List1") =>ovoj funkciji bi trebao poslati broj kolone, ilI  nesto sa select column ili sta ti ja znam
  3.          ......
  4.          nesto radim sa tim podatkom
  5.          ......
  6. next startKolona

jeste me razumili sta sam htio?
zivot je moja domovina.
Ovaj post je ureden 3 puta. Posljednja izmjena 22.12.2016 23:35 od strane Avko. ↑  ↓

#2 22.12.2016 23:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
Da nisi mislio dvije petlje.
Pa naprimjer.
Broj od prvog reda do zadnjeg reda
onda broj od prve kolone do zadnje kolone.

I tako bi prebrojao sve upisane celije.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 22.12.2016 23:44
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
da, bas tako samo sto bi ja isao od prve kolone do zadnje.
u svakoj koloni bi selektirao cijelu kolonu i pomaknuo ju ispod druge kolone, ovisno o nekom kriteriju.

vocepovrcevocepovrcevocepovrce
jabukesalatajabukekeljkruskegrah
narandekrastavcibananeluk mahune
banane  rotkvica spinat
kruske     

sloziti voce ispod voca, a povrce ispod povrca
zivot je moja domovina.
↑  ↓

#4 23.12.2016 00:13
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
Da ali kako znamo odnosno kako racunar zna u kojoj je koloni voce a u kojoj povrce.
Jel svaka druga kolona ili se nakako drugacije zamislio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 23.12.2016 00:23
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
u zaglavlju (headeru) pise tako da kada malo proucim ono tvoje for Each i uskaldim pa cu rijesiti
sada sam zamislio to ovako:

PreuzmiIzvorni kôd (Visual Basic):
  1. columnTitles(0) = "voce"
  2.     Sheets("List1").Select
  3.     Do While (True)
  4.         Dim Title As Variant
  5.         Dim nasao As Boolean
  6.         nasao = False
  7.         Dim c As Range
  8.         For Each c In ActiveSheet.UsedRange
  9.             If c.Row > 1 Then
  10.                 Exit For
  11.             End If
  12.             For Each Title In columnTitles
  13.                 If (Title = c.Value) Then
  14.                     ...nasao kolonu voce
  15.                     ...nesto napravi
  16.                     nasao = True
  17.                     Exit For
  18.                 End If
  19.             Next
  20.         Next c
  21.         If (nasao = False) Then
  22.             Exit Do
  23.         End If
  24.     Loop

znam da nece odma to sve proraditi ali bice
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 27.12.2016 00:52 od strane Avko. ↑  ↓

#6 23.12.2016 09:29
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
za sada sam otkrio ovo:
pronadem zadnji stupac i onda za svaki stupac zadnji red:

PreuzmiIzvorni kôd (Visual Basic):
  1. sub test()
  2. for c=1 to ZadnjaKolona
  3.     MsgBox ZadnjiRed("List1",c) 'ispise za svaku kolonu c koji je zadnji red
  4. next c
  5. end Sub
  6.  
  7. Function ZadnjiRed(ImeSita As String, kolona)
  8.     Dim Zadnji As Long
  9.     Dim ws As Worksheet
  10.    
  11.     Set ws = Sheets(ImeSita)
  12.     With ws
  13.         Zadnji = .Cells(.Rows.Count, kolona).End(xlUp).Row
  14.     End With
  15.     ZadnjiRed = Zadnji
  16. End Function
  17.  
  18. Function ZadnjaKolona(ImeSita As String)
  19. Dim Zadnji As Long
  20. Dim ws As Worksheet
  21. Set ws = Sheets(ImeSita)
  22.     With ws
  23.         Zadnji = .Cells(1, .Columns.Count).End(xlToLeft).Column
  24.     End With
  25.     ZadnjaKolona = Zadnji
  26. End Function

zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 27.12.2016 00:52 od strane Avko. ↑  ↓

#7 26.12.2016 11:52
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
Jel napravi ono sto si htio ili treba neka mala pomoc.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 27.12.2016 01:01
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
nisam, proucavam
koristim za sada tvoje funkcije ZadnjiRed i ZadnjaKolona, uz male izmjene

Dim aktivniList As String
aktivniList = ActiveSheet.Name

nemoram upisivati ZadnjiRed("List1"), ZadnjiRed("List2")...
vec upisem ZadnjiRed(aktivniList)

saljem i varijablu kolona ZadnjiRed(aktivniList,kolona), pa mi nade zadnji red u odredenoj koloni
funkcije ZadnjiRed i ZadnjaKolona preimenovao sam u traziZadnjiRed i traziZadnjauKolonu jer u VBA-u koristim varijable zadnjiRed i zadnjaKolona

za sada sam zapeo na ovome: kako selektirati B1: D4

 ABCDE
1jabukajabukabananakruskabanana
2bananakruskanarandajagodajabuka
3tresnjalubenica limuntresnja
4kruska  tresnjajagoda

zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 27.12.2016 01:04 od strane Avko. ↑  ↓

#9 27.12.2016 12:16
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
evo ja mislim da je to to

naslov svake kolone je datum, koji nije sortiran, ispod je vrsta (voce/povrce) i onda podaci
1.1.5.1.2.1.4.1.3.11.2.5.2.2.2.4.2.3.2.
vocevocevocevocevocepovrcepovrcepovrcepovrcepovrce
jabukajabukakruskabanananarandarajcicamahunegrasakmrkvakrumpir
kruskabananajabuka  mahune mrkvakrumpir 
 itd        

treba sortirati po datumu, ali da ostane redoslijed voce pa onda povrce

PreuzmiIzvorni kôd (Visual Basic):
  1. Sub slaganjeVrsta()
  2.     'aktivni List
  3.    Dim aktivniList As String
  4.     aktivniList = ActiveSheet.Name
  5.     Range("A1").Select
  6.    
  7.     'odredivanje prve kolone i zadnje kolone
  8.    Dim prvaKolona As Long
  9.     Dim zadnjaKolona As Long
  10.     Range("B1").Select
  11.     prvaKolona = 2
  12.     zadnjaKolona = traziZadnjuKolonu(aktivniList)
  13.    
  14.     Dim arrVrsta() As Variant
  15.     Dim i As Long
  16.     ReDim Preserve arrVrsta(i)
  17.     arrVrsta(i) = Cells(2, 2)
  18.     'stvaranje matrice bez ponavljanja
  19.    For c = prvaKolona To zadnjaKolona
  20.         If arrVrsta(i) <> Cells(2, c) Then
  21.             i = i + 1
  22.             ReDim Preserve arrVrsta(i)
  23.             arrVrsta(i) = Cells(2, c)
  24.         End If
  25.     Next c
  26.     'matrica ima vrijednost arrVrsta(0)=voce i arrVrsta(1)=povrce
  27.    i = 0
  28.        
  29.     For c = 2 To zadnjaKolona
  30.         'u svakom stupcu trazimo max broj redova
  31.        If zadnjiSortRed < traziZadnjiRed(aktivniList, c) Then
  32.             zadnjiSortRed = traziZadnjiRed(aktivniList, c)
  33.         End If
  34.         If i < Ubound(arrVrsta) Then 'ako petlja nije dosla do zadnje vrijednosti matrice
  35.            If Cells(2, c) = arrVrsta(i) Then 'ako je celija vrijednosti matrice npr voce=voce
  36.                prvaSortKolona = c               'uzimamo broj kolone za pocetak ranga
  37.                i = i + 1
  38.             Else                                       'ako celija nema vrijednost matrice npr voce<>povrce
  39.                zadnjaSortKolona = c            'uzimamo broj kolone za kraj ranga
  40.                If Cells(2, c + 1) = arrVrsta(i) Then
  41.                     Range(Cells(1, prvaSortKolona), Cells(zadnjiSortRed, zadnjaSortKolona)).Select
  42.                     'sortiranje
  43.                    Range(Cells(1, prvaSortKolona), Cells(zadnjiSortRed, zadnjaSortKolona)).Sort _
  44.                         Key1:=Range(Cells(1, 2), Cells(1, zadnjaSortKolona)), _
  45.                         Order1:=xlAscending, _
  46.                         Orientation:=xlLeftToRight
  47.                     prvaSortKolona = c
  48.                 End If
  49.             End If
  50.         Else
  51.             If c = zadnjaKolona Then
  52.                 Range(Cells(1, prvaSortKolona), Cells(zadnjiSortRed, zadnjaKolona)).Select
  53.                 'sortiranje
  54.                Range(Cells(1, prvaSortKolona), Cells(zadnjiSortRed, zadnjaKolona)).Sort _
  55.                         Key1:=Range(Cells(1, 2), Cells(1, zadnjaKolona)), _
  56.                         Order1:=xlAscending, _
  57.                         Orientation:=xlLeftToRight
  58.             End If
  59.         End If
  60.     Next c
  61. End Sub
  62.  
  63. Function traziZadnjiRed(ImeSita As String, kolona)
  64.     Dim Zadnji As Long
  65.     Dim ws As Worksheet
  66.    
  67.     Set ws = Sheets(ImeSita)
  68.     With ws
  69.         Zadnji = .Cells(.Rows.Count, kolona).End(xlUp).Row
  70.     End With
  71.     traziZadnjiRed = Zadnji
  72. End Function
  73.  
  74. Function traziZadnjuKolonu(ImeSita As String)
  75.     Dim Zadnji As Long
  76.     Dim ws As Worksheet
  77.     Set ws = Sheets(ImeSita)
  78.     With ws
  79.         Zadnji = .Cells(1, .Columns.Count).End(xlToLeft).Column
  80.     End With
  81.     traziZadnjuKolonu = Zadnji
  82. End Function

OVO KOD MENE, ZA SADA, RADI.
Kada ovom budem gledao za mjesec dana necu znati cemu sluzi ni kako radi.
vec mi se desavalo da trebam neku stvar ponovo upotrijebiti pa nisam znao i napravio sam ponovo, a ispalo je sasvim drugacije i isto radi
jbg
zivot je moja domovina.
Ovaj post je ureden 5 puta. Posljednja izmjena 27.12.2016 12:32 od strane Avko. ↑  ↓

#10 27.12.2016 22:38
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: kretanje po stupcima uz pomoc for next petlje
nestalo struje
hehehe, srecom stavio na forum. Sada cu samo downloadat i nastaviti.
Tko bi rekao da cu imati koristi od foruma. (salim se)
zivot je moja domovina.
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 5: 55 pm.