2010-12-16 495 views
1

Je souhaite restreindre les utilisateurs à modifier la plage dans la feuille Ms Excel.Excel vba: restreindre la zone d'édition dans la feuille Excel

Scenario: 

    | A | B | C | D | E | F | G | H | I | J | ... IV 
------------------------------------------- 
1 | | | | | | | | | | | 
------------------------------------------- 
2 | | | | | | | | | | | 
------------------------------------------- 
3 | | | | | | | | | | | 
------------------------------------------- 
4 | | | | | | | | | | | 
------------------------------------------- 
... 
65536 

Dans l'utilisateur de feuille de calcul ci-dessus devraient avoir accès à modifier la plage Column A-Column H. Column I to IV les utilisateurs ne doivent pas autoriser la modification d''un texte ou d'une autre information. Aucune restriction sur le nombre de lignes.

Merci :)

+0

Vous pourriez au moins_ commenter les réponses offertes. –

Répondre

2

Pour ce faire programatically, essayez ceci dans un module (et l'adapter à vos besoins):

Sub ProtectAToH() 
Dim ws as Worksheet 
For each ws In ActiveWorkbook.Worksheets 
    ws.Columns("A:H").Locked = False 
    ws.Protect Contents:=True, Password:="myPassword" 
Next ws 
End Sub 
2

en trois étapes

1) Sélectionnez la feuille entière. Format-> Verrouiller les cellules-> Supprimer le verrouillage pour toutes les cellules. (Toutes les cellules sont initialement "verrouillées" par défaut)

2) Sélectionnez les colonnes de verrouillage souhaitées. Format-> Verrouiller les cellules-> Appliquer le verrouillage (Ceci est déclaratif, vous ne verrouillez rien, vous déclarez simplement ce que vous verrouillerez à l'étape suivante)

3) Format-> Protéger la feuille de travail. (Ceci déclenche la vraie protection)

Vous avez terminé.

HTH

+0

Puisque toutes les cellules sont, en effet, initialement verrouillées, les points 1 et 2 doivent être remplacés par une seule étape = "SÉLECTIONNER les colonnes à déverrouiller, Format-> Verrouiller les cellules-> Supprimer le verrouillage" –

0

Quelques alternatives à sasfrog et propositions de Bélisaire (juste pour enrichir vos options) :

a) vous pouvez simplement masquer les colonnes K: IV, et protéger la feuille de calcul pour éviter démasquage
b) Utilisation des outils, la protection, l'option, définir plage $ a "Permettre aux utilisateurs de modifier des plages": $ h comme éditable sans p assword pour les utilisateurs appartenant au groupe Tout le monde, puis protégez votre feuille. J'aime celui-là.

N'oubliez pas que toute solution impliquant la protection intégrée d'Excel empêchera vos utilisateurs d'insérer/de supprimer des lignes.

c) l'utilisation de VBA (n'empêcheraient pas supprimer/insérer des lignes):

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not (Intersect(Target, Range("$h:$iv")) Is Nothing) Then 
    Target.Value = "" 'or something else' 
    End If 
End Sub 
0
ActiveSheet.ScrollArea = "$A:$H" 

limitera ce que les cellules, l'utilisateur peut sélectionner.

0

option iDevlop de c) devrait être modifié pour éviter une boucle infinie:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then 
     If Not Target.Cells.Count > 1 Then     'Prevent Error on Row Insert or Delete 
      If Not Target.Value = "" Then Target.Value = "" 'Prevent infinite loop 
     End If 
    End If 
End Sub 

Cela permettra encore à un utilisateur de faire une copie coller plusieurs cellules dans votre gamme Intersection spécifiée. Havent a compris cela.