Takze jinak:
V editoru VBA (Alt+F11) vlozit do
modulu listu s tabulkou nasledujici procedury (v Sub Worksheet_Change identifikace sloupce: zadat sloupec, ve kterem budou vkladany znaky vyvolavajici formatovani, zde napr.: S:S, a identifikace formatovani: formatovat - "~" - tilda, obnovit format- "#" - krizek, v procedure lze zmenit; v Sub FormatovatBunky formalni radek tabulky: zadat skutecny rozsah sloupcu tabulky bez ohledu na skutecny prvni radek tabulky, zde napr. A1:E1):
Kód: Vybrat vše
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RwsOfs As Long
Const FormStr As String = "~" ' tilda
Const ObnFormStr As String = "#" ' krizek
' identifikace sloupce
If Intersect(Target, Range("s:s")) Is Nothing Then Exit Sub
If Target.Rows.Count > 1 Then Exit Sub
RwsOfs = Target.Row - 1
Application.EnableEvents = False
On Error GoTo Err1
' identifikacni znak formatovani radku tabulky - FormStr
If Target.Value = FormStr Then FormatovatBunky RwsOfs, True, 3: Target.Value = vbNullString
' identifikacni znak obnovy formatovani radku tabulky - ObnFormStr
If Target.Value = ObnFormStr Then FormatovatBunky RwsOfs, False, 0: Target.Value = vbNullString
On Error GoTo 0
Err1:
Application.EnableEvents = True
End Sub
Sub FormatovatBunky(RwsOfs As Long, Strikethr As Boolean, ClrInd As Byte)
Dim Radek As Range, Blok As Range
' formalni radek tabulky - v radku 1:1 pro sloupce tabulky
Set Radek = ActiveSheet.Range("a1:e1")
' formatovani: efekt preskrtnuty, barva fontu cervena
With Radek.Offset(RwsOfs, 0).Font
.Strikethrough = Strikethr
.ColorIndex = ClrInd
End With
End Sub
Pouziti:
v pozadovanem radku v definovanem sloupci vlozit do bunky pro zformatovani znak "~", pro obnovu znak "#", vlozeny znak je procedurou odstranen (z duvodu jednoznacnosti zadani).