Stránka 1 z 1
Excel - zákaz vkládání
Napsal: 19 čer 2014 08:26
od Karbos
Ahoj,
neznáte způsob, jak zakázat do zamčeného listu vkládat data přes clipboard? Jde mi o to, že buňky, do kterých uživatel nemá co zasahovat zamknu. To je OK. Ale protože je línej, tak si do buněk, do kterých psát má kopíruje např. čísla zákazníka z různých jiných programů, wordu,.... a rozhasí tím formát cíle podle formátu zdroje a v lepším případě na to zareagují nastavené vzorce chybou "#REF!". Tomu chci zabránit a chtěl bych povolit pouze přímý zápis do buňky.
Díky
Re: Excel - zákaz vkládání
Napsal: 19 čer 2014 17:50
od cmuch
Tak zakázat to nepůjde nebo o tom nevím jak.
Nevím kolik je buněk do kterých má někdo zapisovat nebo jak často se to děje.
Takže buď když někdo klikne do buňky tak naněj vyskočí Inputbox nebo formulář a pak vstupní údaj zpracuješ jak potřebuješ
nebo je tam nech zapsat a buňku makrem naformátuj tak jak potřebuješ.
Re: Excel - zákaz vkládání
Napsal: 20 čer 2014 17:10
od cmuch
Tak to lze, trochu jsem hledal a zkoušel.
Pokusy jsou v příloze.
To co je pro tebe tak je v modulu
ThisWorkbooknebo toto si tam zkopíruj
Kód: Vybrat vše
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'reset vypnuti kontroly stisku klaves (ctrl+v)
Application.OnKey "^v"
End Sub
Private Sub Workbook_Open()
MsgBox "V tomto sesite je zakazano vkladat pres clipboard !!", vbInformation, "Oznameni"
'zakazani stisku klaves (ctrl+v)
Application.OnKey "^v", ""
End Sub
Re: Excel - zákaz vkládání
Napsal: 24 čer 2014 11:57
od Karbos
Tohle je super, funguje to na CTRL + V, ale když klikneš do buňky pravím tlačítkem a dáš vložit tak to jde.
Re: Excel - zákaz vkládání Vyřešeno
Napsal: 27 čer 2014 19:35
od cmuch
Tak pak si dej do listu kde chceš aby to nešlo tyto makra.
Jen změň dle sebe oblast
bigRange v obouch makrech.
Kód: Vybrat vše
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim bigRange As Range, isect As Range
'az 30 oblasti kam se nema dat kliknout
Set bigRange = Application.Union(Range("A5"), Range("B7:C78"), Range("j7:j78"))
Set isect = Application.Intersect(bigRange, Target)
If Not isect Is Nothing Then
MsgBox "Nelze", vbCritical
Cancel = True
Else
Cancel = False
End If
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim bigRange As Range, isect As Range
'az 30 oblasti kam se nema dat kliknout
Set bigRange = Application.Union(Range("A5"), Range("B7:C78"), Range("j7:j78"))
Set isect = Application.Intersect(bigRange, Target)
If Not isect Is Nothing Then
MsgBox "Nelze", vbCritical
Cancel = True
Else
Cancel = False
End If
End Sub