Bosna i Hercegovina



#1 11.07.2017-13:57
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,756


Subject: 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
Newton laže! Lake padaju brže!
Ovaj komentar je mijenjan 2 puta. zadnja izmjena 11.07.2017-20:09 od strane Avko. ↑  ↓

#2 11.07.2017-21:57
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,488


Subject: Re: VBA-excel stavljanje reda u matricu
DownloadIzvorni kod (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.
Pozdrav
↑  ↓

#3 11.07.2017-22:25
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,756


Subject: 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
Newton laže! Lake padaju brže!
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 11.07.2017-23:08 od strane Avko. ↑  ↓

#4 11.07.2017-22:33
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,488


Subject: Re: VBA-excel stavljanje reda u matricu
Pa nisam znao pravu namjenu moze biti variant ili string.
Pozdrav
↑  ↓

#5 11.07.2017-23:05
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,756


Subject: 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?
Newton laže! Lake padaju brže!
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 11.07.2017-23:12 od strane Avko. ↑  ↓

#6 12.07.2017-00:28
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,335


Subject: 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 Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,488


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

#8 12.07.2017-10:39
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,756


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

DownloadIzvorni kod (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 fajlu: rar  proba_niz_inputbox_msgbox.rar
Preuzimanja: 15
Veličina: 17.04 KB


Newton laže! Lake padaju brže!
↑  ↓

#9 13.07.2017-19:08
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,488


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

#10 14.07.2017-09:26
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,756


Subject: Re: VBA-excel stavljanje reda u matricu
Citat od 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
Newton laže! Lake padaju brže!
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 22.11.2017-17:54.