Hallo Björn,
da hast du natürlich recht. Bei freigebenen Arbeitsmappen sind bestimmte Funktionen leider nicht verfügbar. Darunter zählt m.W. auch das Ein- und Ausschalten des Blattschutzes, wenn ich mich recht erinnere. Dann muss es eben anders gehen. Ein Idee hätte ich noch.
Füge in einem Standardmodul (z.B. Modul1) diesen Code ein:
Public oldName As String
Sub Eintragen()
If ActiveCell = "" Then ActiveCell = Application.UserName Else MsgBox "Hier steht schon jemand!", vbInformation
End Sub
Sub Loeschen()
If ActiveCell = Application.UserName Then ActiveCell.Clear
End Sub
Wichtig ist die Variable oldName am Beginn des Codes. Diese muss Public sein.
Füge nun in dem Tabellenmodul, das deinem Eingabe-Blatt entspricht den folgenden Code ein:
Private Sub Worksheet_Activate()
oldName = ActiveCell
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If oldName <> "" And oldName <> Application.UserName Then
Application.EnableEvents = False
Target = oldName
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then ActiveCell.Select
oldName = ActiveCell
End Sub
Damit wird verhindert, dass ein fremder Name z.b. durch Betätigen der Entf.-Taste gelöscht oder überschrieben wird.
Damit das auch mit der Zelle funktioniert, die beim Öffnen der Arbeitsmappe aktiv ist, muss schließlich noch folgender Code ins Modul "Diese Arbeitsmappe"
Private Sub Workbook_Open()
oldName = ActiveCell
End Sub
Ab sofort kannst du zwar in Leerzellen neue Einträge machen. z.B. über deinen Button. Aber löschen geht nur, wenn die Aktive Zelle deinen Namen enthält. Probiers aus.
PS: Dass eine Mehfachauswahl von Zellen in diesem Blatt nicht möglich ist, ist Absicht. Nur so kann gewährleistet werden, dass ein falsch entfernter Name nach dem Löschen automatisch wieder eingefügt wird.
Ich hoffe das hilft dir erstmal so weiter.
Gruß Mr. K.
|