Bosna i Hercegovina



#1 22.12.2016-23:33
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


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

DownloadIzvorni kod (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:

DownloadIzvorni kod (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

DownloadIzvorni kod (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?
Život je moja domovina.
Ovaj komentar je mijenjan 3 puta. zadnja izmjena 22.12.2016-23:35 od strane Avko. ↑  ↓

#2 22.12.2016-23:36
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,824


Subject: 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.
Pozdrav
↑  ↓

#3 22.12.2016-23:44
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: 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
Život je moja domovina.
↑  ↓

#4 23.12.2016-00:13
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,824


Subject: 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.
Pozdrav
↑  ↓

#5 23.12.2016-00:23
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: 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:

DownloadIzvorni kod (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
Život je moja domovina.
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 27.12.2016-00:52 od strane Avko. ↑  ↓

#6 23.12.2016-09:29
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


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

DownloadIzvorni kod (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

Život je moja domovina.
Ovaj komentar je mijenjan 2 puta. zadnja izmjena 27.12.2016-00:52 od strane Avko. ↑  ↓

#7 26.12.2016-11:52
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,824


Subject: Re: kretanje po stupcima uz pomoc for next petlje
Jel napravi ono sto si htio ili treba neka mala pomoc.
Pozdrav
↑  ↓

#8 27.12.2016-01:01
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: 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

Život je moja domovina.
Ovaj komentar je mijenjan 2 puta. zadnja izmjena 27.12.2016-01:04 od strane Avko. ↑  ↓

#9 27.12.2016-12:16
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: 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

DownloadIzvorni kod (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
Život je moja domovina.
Ovaj komentar je mijenjan 5 puta. zadnja izmjena 27.12.2016-12:32 od strane Avko. ↑  ↓

#10 27.12.2016-22:38
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: 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)
Život je moja domovina.
↑  ↓

#11 27.12.2016-22:56
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,824


Subject: Re: kretanje po stupcima uz pomoc for next petlje
Nekada davno pala mi je ideja da iscrtam sahovsku tablu kodom.
Tada sam ucio programiranje.
Uspio sam ja to nakon mozda 5 do 6 dana mukotrpnog rada.
Kod je cini mi se bio vise od jedne stranice
Nakon par godina uradio sam kod koji je bio mozda desetak reda ili manje i mnogo brze radi.
Pozdrav
↑  ↓

#12 28.12.2016-08:38
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,319


Subject: Re: kretanje po stupcima uz pomoc for next petlje
napredovao si i ides ka savrsenstvu, ja sam jos uvijek na 10 stranica i da mi nema googla neznam kako bi i napisao neki kod.
hehehe
Život je moja domovina.
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 15.12.2018-03:03.