[ ib.kroki @ 17.03.2017. 10:17 ] @
Imam tabelu na zaključanom radnom listu i problem sa automatskim dodavanjem novog reda.

Potreban mi je makro koji će se aktivirati ako je selektovana zadnja otključana ćelija (u primeru to je H9) i pritisnemo TAB, a uradiće sledeće
- otključati radni list (nema šifru)
- na dnu tabele nazvane TBL_Primer dodati novi red
- zaključati radni list (bez šifre)
[ Jpeca @ 20.03.2017. 09:08 ] @
Procedura za dodavanje novog reda u tabeli je jednostavna - Otključaj radni list, Dodaj novi red na kraju table, Zaključaj radni list

Code:
Sub AddNewRow()
   ActiveCell.Worksheet.Unprotect
   Selection.ListObject.ListRows.Add AlwaysInsert:=True
   ActiveCell.Worksheet.Protect
End Sub


Vezivanje makroa za neku prečicu na tastaturi je jednostavno Add Shortcut To Macro. Međutim na taj način nije moguće dodeljivanje Tab makrou. Zato pozivanje procedure na Tab možemo da dodamo u kodu - na događaj Workbook_Open (ili na događaj Activate radnog lista ako treba da radi samo na određenom listu)
Code:
Private Sub Workbook_Open()
 Application.OnKey "{TAB}", "MyTabProc"
End Sub


Glavni deo koda je u MyTabProc
Tu treba ispitati uslov - da li smo "na kraju" tabele
Ako jesmo da se pozove gornja procedura za dodavanja reda

Još jedna važna stvara u ovoj proceduri je da pošto smo presreli Tab taster - da ga ponovo prosledimo, ja sam to uradio u kodu sa Next.Select
Code:
Public Sub MyTabProc()
'  Dodaje novi red u tabeli
'  U slucaju da je aktivna celija poslednja otkljucana
'  Dodaje se novi red
'  Procedura se poziva na Tab taster
'  zato je dodato da se odreadi prelazak na novu celiju
'
'  P.Jovanovic za  elitesecurity.org

   Dim uslov As Boolean
   Dim lastRw As Long
   lastRw = Selection.ListObject.ListRows.Count + 1   ' racuna poslednji red tabele
   ' Uslov je da je aktivan celija u poslednjem redu tabele i da je celija iza nje zakljucana
   uslov = Not (ActiveCell.Locked) And ActiveCell.row = lastRw And ActiveCell.Offset(ColumnOffset:=1).Locked
   If uslov = True Then
      AddNewRow
    End If
   ' Odradi Tab - predji u sledecu celiju
   ActiveCell.Next.Select ' Go to Next cell
End Sub


[ ib.kroki @ 20.03.2017. 10:57 ] @
Hvala, hvala, hvala!

Hvala za detaljno objašnjenje, hvala za fajl i još jednom hvala ...
:)