Voglio impedire ad altri di modificare il contenuto della cella nel mio foglio excel usando VBA. È possibile farlo?Come bloccare i dati in una cella in excel usando vba
risposta
Prova ad usare il metodo Worksheet.Protect
, in questo modo:
Sub ProtectActiveSheet()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, Password="SamplePassword"
End Sub
Si dovrebbe, tuttavia, essere preoccupato per inclusa la password nel codice VBA. Non hai necessariamente bisogno di una password se stai solo provando a creare una semplice barriera che impedisce all'utente di commettere piccoli errori come l'eliminazione di formule, ecc.
Inoltre, se vuoi vedere come fare certe cose in VBA in Excel, prova a registrare una Macro e a guardare il codice che genera. Questo è un buon modo per iniziare in VBA.
È possibile innanzitutto scegliere quale le cellule non si desidera essere protetti (per essere modificabile dall'utente) impostando lo stato di blocco di loro su False:
Worksheets("Sheet1").Range("B2:C3").Locked = False
Quindi, è possibile proteggere il foglio, e tutte le altre celle saranno protette. Il codice per fare questo, e ancora consentire il codice VBA per modificare le cellule è:
Worksheets("Sheet1").Protect UserInterfaceOnly:=True
o
Call Worksheets("Sheet1").Protect(UserInterfaceOnly:=True)
Si potrebbe anche voler annuncio d una password, altrimenti è semplice fare clic su "non rimuovere il foglio di lavoro" e quindi è possibile apportare modifiche alle celle precedentemente bloccate. – Jonathan
la riga sopra Worksheets ("Sheet1"). Protect (UserInterfaceOnly: = True) dovrebbe essere Worksheets ("Sheet1"). Proteggi UserInterfaceOnly: = True, ovvero nessuna parentesi – dinotom
@dinotom, guarda la cronologia delle modifiche e il tipo che ha modificato in questo modo spiega perché –
Sub LockCells()
Range("A1:A1").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= False, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub
È anche possibile farlo a livello di foglio catturato nel foglio di lavoro di cambia evento. Se quella suite le tue esigenze migliori. Consente di blocco dinamico in base ai valori, criteri, ect ...
Private Sub Worksheet_Change(ByVal Target As Range)
'set your criteria here
If Target.Column = 1 Then
'must disable events if you change the sheet as it will
'continually trigger the change event
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "You cannot do that!"
End If
End Sub
Diciamo per esempio, in un caso, se si vuole celle bloccate dalla serie A1 a I50 poi sotto è il codice:
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
In un altro caso, se si dispone già di un foglio protetto quindi seguire sottostante codice:
ActiveSheet.Unprotect Password:="Enter your Password"
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
- 1. Aggiunta di testo a una cella in Excel tramite VBA
- 2. Bug in VBA DateValue() in VBA Excel?
- 3. Excel: come verificare se una cella è vuota con VBA?
- 4. Excel/VBA: passaggio di una singola cella come argomento
- 5. Come modificare il formato di una cella in testo usando VBA
- 6. Excel vba: tipo range e cella
- 7. valore Get di una cella unita di un Excel dal suo indirizzo di cella in VBA
- 8. matrice in Excel VBA
- 9. Come inserire un'immagine in Excel in una posizione cella specificata con VBA
- 10. VSTO: Allegare meta-dati a una cella in Excel?
- 11. Passa in rassegna i file in una cartella usando VBA?
- 12. Come esportare i dati in Excel usando LINQ su Entity?
- 13. Come rendere una cella excel ReadOnly usando C#?
- 14. come scrivere in una nuova cella in python usando openpyxl
- 15. Funzione array in Excel VBA
- 16. Come utilizzare VBA per creare una cella in Excel 2007 trasparente
- 17. Come posso definire Inserisci evento keyPressed per una cella prescelta dinamicamente in VBA per Excel
- 18. excel vba ottenere la riga, valore della cella da selection.address
- 19. Inserimento in una stringa VBA di Excel
- 20. Utilizzo della funzione "Celle" in excel vba
- 21. Caricamento di file di testo linux in excel usando VBA
- 22. come ottenere un oggetto "Cell" in excel VBA
- 23. VBA ADODB excel - leggere i dati da Recordset
- 24. VBA Excel - leggere il valore della cella dal codice
- 25. Restituzione di una corrispondenza regolare in VBA (excel)
- 26. Ultima cella vuota vuota nella riga; Excel VBA
- 27. EXBA VBA: Excel Macro per creare una tabella in PowerPoint
- 28. Regola larghezza cella in Excel
- 29. CopiaOrigin su Insert in Excel VBA
- 30. Inserire un pulsante di comando in una cella MS Excel vba
http://stackoverflow.com/questions/17111648/how-to-lock-excel-cells-in-vba/ 18868676 # 18868676 –