2010-12-16 8 views
1

Ich möchte die Benutzer beschränken Bereich in Ms Excel-Tabelle zu bearbeiten.Excel VBA: Bearbeitungsbereich in Excel-Tabelle einschränken

Scenario: 

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

In der obigen Tabelle Benutzer Zugriff haben soll den Bereich von Column A-Column H zu bearbeiten. Column I to IV Benutzer sollten nicht erlauben, Text oder irgendetwas zu bearbeiten. Keine Beschränkung der Anzahl der Zeilen.

Thanks :)

+0

Sie könnten _at mindestens_ Kommentar zu den angebotenen Antworten abgeben. –

Antwort

2

Um dies programmatisch zu tun, versuchen Sie dies in einem Modul (und passen sie an Ihre Bedürfnisse anpassen):

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

In drei Schritten

1) das ganze Blatt auswählen. Formatieren-> Zellen sperren-> Sperre für alle Zellen entfernen. (Alle Zellen sind standardmäßig standardmäßig "gesperrt".)

2) Wählen Sie die gewünschten Sperrsäulen aus. Format-> Zellen sperren-> Sperren anwenden (Dies ist deklarativ, Sie sperren nichts, geben nur an, was Sie im nächsten Schritt sperren werden)

3) Format-> Arbeitsblatt schützen. (Dies löst den wirklichen Schutz aus)

Sie sind fertig.

HTH

+0

Da alle Zellen in der Tat zunächst gesperrt sind, sollten die Punkte 1 und 2 durch einen einzigen Schritt ersetzt werden: "Spalten zum Entsperren auswählen, Format-> Zellen sperren-> Sperren entfernen" –

0

Einige Alternativen zu sasfrog und belisarius Vorschläge (nur Ihre Möglichkeiten zu bereichern) :

a) K können Sie auch nur Spalten ausblenden: IV, und das Arbeitsblatt schützen Einblenden
b) Mit Hilfe der Werkzeuge zu verhindern, Schutz, „Benutzer dürfen Bereiche bearbeiten“ Option definieren Bereich $ a: $ h wie editierbar ohne p Assembord für Benutzer, die der Gruppe "Jeder" angehören, und schützen Sie dann Ihr Blatt. Ich mag das.

Vergessen Sie nicht, dass jede Lösung, die den integrierten Excel-Schutz beinhaltet, Ihre Benutzer daran hindert, Zeilen einzufügen/zu löschen.

c) Mit VBA (würde Zeilen nicht verhindern Löschen/Einfügen):

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" 

wird beschränken, welche Zellen der Benutzer auswählen kann.

0

iDevlop die Option c) sollte eine Endlosschleife zu verhindern geändert werden:

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 

Das wird noch ein Benutzer ermöglichen, eine mehrzelligen Kopie in Ihren angegebenen Intersect Bereich einfügen zu machen. Havent hat das herausgefunden.