Prikazi cijelu temu 12.07.2017 10:39
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Lokacija:zagreb


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:
proba_niz_inputbox_msgbox.rar
Preuzimanja:383
Velicina datoteke:17.04 KB


zivot je moja domovina.