Chcę, aby inni nie edytowali zawartości komórki w moim arkuszu Excela za pomocą VBA. Czy można to zrobić?Jak zablokować dane w komórce w programie Excel za pomocą vba
Odpowiedz
Spróbuj użyć metody Worksheet.Protect
, tak:
Sub ProtectActiveSheet()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, Password="SamplePassword"
End Sub
Należy jednak być zaniepokojony tym hasło w kodzie VBA. Nie potrzebujesz hasła, jeśli próbujesz ustawić prostą barierę, która uniemożliwia użytkownikowi popełnianie drobnych błędów, takich jak usuwanie formuł itp.
Ponadto, jeśli chcesz zobaczyć, jak robić pewne rzeczy w VBA w programie Excel spróbuj nagrać makro i przejrzyj generowany kod. To dobry sposób na rozpoczęcie pracy z VBA.
Można najpierw wybrać których komórki nie chcesz być chronione (być edytowane przez użytkownika) poprzez ustawienie Locked status nich fałsz:
Worksheets("Sheet1").Range("B2:C3").Locked = False
Następnie można chronić arkusz, a wszystkie pozostałe komórki będą chronione. kod to zrobić, i nadal pozwalają kodu VBA zmodyfikować komórki to:
Worksheets("Sheet1").Protect UserInterfaceOnly:=True
lub
Call Worksheets("Sheet1").Protect(UserInterfaceOnly:=True)
Możesz również chcieć ogłoszenie d hasło, w innym wypadku wystarczy kliknąć "Odblokuj arkusz roboczy", a następnie wprowadzić zmiany w uprzednio zablokowanych komórkach. – Jonathan
wiersz powyżej Arkusze robocze ("Arkusz1") Protect (UserInterfaceOnly: = True) powinien być arkuszem roboczym ("Arkusz1"). Zabezpiecz UserInterfaceOnly: = True, tj. Bez nawiasów – dinotom
@dinotom, spójrz na historię edycji i faceta, który edytował w ten sposób wyjaśnia, dlaczego –
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
Można też zrobić to na poziomie arkusza przechwyconego w arkuszu roku zmień wydarzenie. Jeśli to lepiej spełnia twoje potrzeby. Umożliwia dynamiczne blokowania w oparciu o wartości, kryteriów, 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
Załóżmy na przykład w jednym przypadku, jeśli chcesz zablokowanych komórek z zakresu A1 do I50 następnie poniżej kod:
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
W innym przypadku, jeśli masz już chroniony arkusz następnie wykonaj poniższy kod:
ActiveSheet.Unprotect Password:="Enter your Password"
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
- 1. Filtrowanie tablic 2D w programie Excel VBA
- 2. Niedopasowanie argumentu ByRef w programie Excel VBA
- 3. VBA zminimalizować wstążkę w programie Excel
- 4. CopyOrigin na Insert w programie Excel VBA
- 5. Efektywna dolna obudowa w programie Excel VBA
- 6. Jak wygenerować okno dialogowe wyboru zakresu za pomocą vba w programie Excel?
- 7. jak pogrubić dane CSV w programie excel?
- 8. jak podzielić łańcuch z wieloma delimetrami w programie vba excel?
- 9. W programie Excel vba ustawiono pogrubiony określony tekst ciągu znaków w komórce?
- 10. Lista rozwijana w komórce Excel
- 11. Funkcja skrótu MD5 w programie excel bez użycia VBA
- 12. Jak usunąć określone znaki w programie Excel 2010 komórce
- 13. Korzystanie z funkcji "Komórki" w programie excel vba
- 14. Usuwanie zdjęć za pomocą programu Excel VBA
- 15. Przeprowadź pętlę przez pierwszą kolumnę zakresu tabeli w programie Excel za pomocą VBA
- 16. Jak odnieść się do tabel w programie Excel vba?
- 17. Jak uzyskać dostęp do grup kontaktów w programie Excel VBA?
- 18. Jak używać VBA do komórki w programie Excel 2007 przezroczysty
- 19. Dodawanie hiperłączy w programie Excel [2007] w języku C# - W programie Excel to samo
- 20. Jak pobrać dane z pliku XML do arkusza Excel za pomocą VBA
- 21. Względne zamiast bezwzględnych ścieżek w programie Excel VBA
- 22. Znajdź i zamień tekst w programie Powerpoint 2010 z programu Excel 2010 za pomocą VBA
- 23. Wykonaj polecenie w wierszu polecenia za pomocą programu excel VBA
- 24. Excel: Wyszukiwanie wielu terminów w komórce
- 25. Jak zmienić kolor tekstu w tej samej komórce arkusza programu Excel za pomocą apache poi?
- 26. Przycinanie komórek przy użyciu języka VBA w programie Excel
- 27. Jaki jest czas istnienia zmiennej globalnej w programie excel vba?
- 28. Dostęp do bazy danych SQL w programie Excel VBA
- 29. Funkcja Dir w programie Excel 2010 VBA nie działa
- 30. #NAME? błąd w programie Excel dla funkcji VBA
http://stackoverflow.com/questions/17111648/how-to-lock-excel-cells-in-vba/ 18868676 # 18868676 –