Centar za edukaciju-BiH



#1 11.07.2017 13:57
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:VBA-excel stavljanje reda u matricu
u petlji prolazimo preko redova i mijenjamo podatke.

kada promijenimo podatak u nekoj celiji pita nas na kraju petlje u input boxu zelimo li nastaviti i
ako odgovorimo sa NE onda bi nam trebao vratiti taj red iz matrice na red koji smo trenutno mijenjali

pitanje:
kako staviti cijeli red u matricu i poslije ga vratiti nazad prema potrebi?

Red je npr. Red=1 a broj kolona=12
zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 11.07.2017 20:09 od strane Avko. ↑  ↓

#2 11.07.2017 21:57
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA-excel stavljanje reda u matricu
PreuzmiIzvorni kôd (Visual Basic):
  1. Option Explicit
  2. Dim Niz() As Integer
  3. Function NizCelija(rng As Range)
  4. Dim BrojCelija As Integer
  5. Dim I As Integer
  6.  
  7. ReDim Niz(rng.Count)
  8.  
  9. For Each rng In rng.Cells
  10. I = I + 1
  11. Niz(I) = rng.Value
  12. Next rng
  13. End Function
  14.  
  15. Function Vrati(RedBrCelije As Integer)
  16. Vrati = Niz(RedBrCelije)
  17. End Function

ovo bi lijepo bilo napraviti klasu.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 11.07.2017 22:25
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA-excel stavljanje reda u matricu
Zasto niz= integer , oce to raditi? Celije mogu imati bilo koju vrijednost. Mozda bi niz trebso biti variant?
A koja je razlika izmedu ovoga: var=cells(1,1) i ovogs var=cells(1,1).vari
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 11.07.2017 23:08 od strane Avko. ↑  ↓

#4 11.07.2017 22:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA-excel stavljanje reda u matricu
Pa nisam znao pravu namjenu moze biti variant ili string.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 11.07.2017 23:05
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA-excel stavljanje reda u matricu
Dobro vidim da mislis na moju memooriju. Sutra cu staviti primjer pa nastaviti. Kad vidim ono for each odma me zaboli glava
A koja je razlika izmedu var=cells(1,1).value i var=cells(1,1)
Sto se mijenja kod var ako su celije int, string ili nesto trece?
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 11.07.2017 23:12 od strane Avko. ↑  ↓

#6 12.07.2017 00:28
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,854


Predmet:Re: VBA-excel stavljanje reda u matricu
Vidim opet se zanimavate sa XEKSELOm kako ga ja zovem.
I jas trenutno se zanimavam sa njega samo ovaj put je u pitajne iscitavajne iz njega po horizontala i verikala i na osnovu neki pravila stvarajne EAN13 Barcod.
Jos nisu mi jasnni neki od pravila koi sad proucavan pa mozda bice i neko pitajne za forumdzije.

A ovo oko dimenzionirajne na variabite je dobro da radis ako znas tocno sta se unosi u celijama zbog laksa obrada ti podate u buducnost.
↑  ↓

#7 12.07.2017 09:21
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA-excel stavljanje reda u matricu
Da budem iskren neznam dali postoji razlika.
var = Cells(1, 1).Value
i
var = Cells(1, 1)

U vb-u svuda to postoji pa podatke iz nekog objekta mozes iscitati samim nazivom objekta ili pridodati value sto znaci vrijednost.

moje licno misljenje je ovo.
Kada su pravljeni objekti data je var objekta koji je klasa e sad klasa ima i svoje variable kao sto su bojaobjekta rednibroj itd ima toga.
E sad red je bio dodati i value odnosno vrijednost unesena u objekat stim sto iz samog naziva opet se cita vrijednost.
Citat:
Sto se mijenja kod var ako su celije int, string ili nesto trece?
Imas u helpu opisano koliko memeorije koja var zauzima.
Ako stavis variant onda ces potrositi 16 bita a mozda i vise zavisno jesul samo upisani brojevi ili slova i brojevi.
Jednostavno netreba se razbacivati ako hoces dobru app.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 12.07.2017 10:39
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA-excel stavljanje reda u matricu
    A            B    C
1    Jabuka        10    Zagreb    
2    Tresnja        5    Zagreb    
3    Visnja        ?    DugoSelo    
4    Sljiva        12    IvanicGrad
5    Banana        10    ?        
6    Kruska        4    ?        
7    Krastavac    5    Zagreb    

PreuzmiIzvorni kôd (Visual Basic):
  1. Sub proba()
  2.     'inicijalizacija varijabli
  3.    Dim aktivniList As String
  4.     Dim zadnjiRed As Long
  5.     Dim zadnjaKolona As Long
  6.     Dim red As Long
  7.     Dim kolona As Long
  8.    
  9.     'aktivni list
  10.    aktivniList = ActiveSheet.Name
  11.        
  12.     'pronadi zadnju kolonu i zadnji red
  13.    zadnjaKolona = traziZadnjuKolonu(aktivniList)
  14.     zadnjiRed = traziZadnjiRed(aktivniList, 1)
  15.     Range("A1").Select 'pozicioniraj na A1
  16.    
  17.     Dim redBackup()
  18.     Dim inputStr As String
  19.     Dim poruka As String
  20.     Dim nizCount As Long
  21.    
  22.     For red = 1 To zadnjiRed
  23.         For kolona = 1 To zadnjaKolona
  24.             If Cells(red, kolona) = "?" Then
  25.                 'stavljanje reda u redBackup niz
  26.                redBackup = Range(Cells(red, 1), Cells(red, zadnjaKolona)) ' .Value
  27.                For nizCount = 0 To UBound(redBackup)
  28.                     poruka = poruka & redBackup(nizCount) & " " 'GRESKA
  29.                Next nizCount
  30.                
  31. ponoviUnos:     inputStr = InputBox(poruka, "UNOS PODATAKA")
  32.                
  33.                 If StrPtr(inputStr) = 0 Then
  34.                     'kliknut je prekid
  35.                    MsgBox ("kliknuto je ponisti" & vbNewLine & "pokreni ponovo unos")
  36.                     GoTo ponoviUnos
  37.                 Else
  38.                     'podaci uneseni
  39.                    'provjeri ispravnost podataka
  40.                    ispravno = MsgBox(poruka, vbYesNoCancel + vbApplicationModal + vbDefaultButton1, "OVO JE ISPRAVNO??")
  41.                         Select Case ispravno
  42.                             Case vbCancel
  43.                                 'ako je pritisnut Cancel, izadi iz procedure
  44.                                Exit Sub
  45.                             Case vbYes
  46.                                 'MsgBox ("PODACI SU ISPRAVNI")
  47.                                'upisi podatke u red
  48.                                Cells(red, kolona) = inputStr
  49.                             Case vbNo
  50.                                 MsgBox ("PODACI NISU ISPRAVNI")
  51.                                 'vrati podatke i ponovi unos
  52.                                Range(Cells(1, 1), Cells(1, zadnjaKolona)) = redBackup
  53.                                 GoTo ponoviUnos
  54.                         End Select
  55.                 End If
  56.             End If
  57.         Next kolona
  58.     Next red
  59. End Sub
  60.  
  61. Function traziZadnjiRed(ImeSita As String, kolona)
  62.     Dim Zadnji As Long
  63.     Dim ws As Worksheet
  64.    
  65.     Set ws = Sheets(ImeSita)
  66.     With ws
  67.         Zadnji = .Cells(.Rows.Count, kolona).End(xlUp).Row
  68.     End With
  69.     traziZadnjiRed = Zadnji
  70. End Function
  71.  
  72. Function traziZadnjuKolonu(ImeSita As String)
  73.     Dim Zadnji As Long
  74.     Dim ws As Worksheet
  75.     Dim zadnjaCelija As Range
  76.    
  77.     Set ws = Sheets(ImeSita)
  78.    
  79.     Set zadnjaCelija = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, _
  80.                                     LookAt:=xlPart, SearchOrder:=xlByColumns, _
  81.                                     SearchDirection:=xlPrevious, MatchCase:=False)
  82.    
  83.     Zadnji = zadnjaCelija.Column
  84.     traziZadnjuKolonu = Zadnji
  85. End Function


Prilozi:
Informacije o tipu datoteke za:rar  proba_niz_inputbox_msgbox.rar
Preuzimanja:383
Velicina datoteke:17.04 KB


zivot je moja domovina.
↑  ↓

#9 13.07.2017 19:08
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA-excel stavljanje reda u matricu
I ovo bi moglo ici u onu temu sa funkcijama samo bi trebalo malo i mopisati sta radi i koja je svrha.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 14.07.2017 09:26
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA-excel stavljanje reda u matricu
Citiraj zxz:
I ovo bi moglo ici u onu temu sa funkcijama samo bi trebalo malo i mopisati sta radi i koja je svrha.

jos da rijesim GRESKU iz 28 reda, onda bi moglo ici
zivot je moja domovina.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 41 am.