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
Nije to loše Rembrante, samo što ne bi dodao još malo boje?