Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blattschutz ohne Makro zu stören

Blattschutz ohne Makro zu stören
19.04.2019 10:49:36
Babs
Hallo Liebe Profis!
also ich habe eine Arbeitsmappe mit ca. 30 Tabellenblättern - im Tabellenblatt 'Materialanfoderung' ist ein Formular das sich ausfüllt und Löscht je dach dem welchen Button man drückt. (Formular Ausfüllen, Mail Senden und Listen Löschen.
Mein Problem ist das wenn ich einen Blattschutz erstelle alle meine VBA´s nicht mehr laufen :-(
Hat jemand eine Idee wie ich vermeiden kann das der Blattschutz meine Makros stört und umgekehrt doch ein Blattschutz möglich ist?
u.a. die Makros die ich habe:
dieses sorgt dafür das die Liste auf Tabellenblatt Materialanforderung ausgefüllt wird


Private Sub CommandButton1_Click()
Dim z, nr, zz
z = 22
For nr = 1 To 29
With Sheets("Produktgruppe" & Trim(Str(nr)))
For zz = 3 To 1000
If .Cells(zz, 2)  "" Then
Cells(z, 8) = .Cells(zz, 2)
Cells(z, 10) = .Cells(zz, 4)
Cells(z, 12) = .Cells(zz, 3)
Cells(z, 14) = .Cells(zz, 7)
Cells(z, 16) = .Cells(zz, 5)
Cells(z, 18) = .Cells(zz, 6)
Cells(z, 22) = .Cells(zz, 8)
Cells(z, 24) = .Cells(zz, 9)
Cells(z, 26) = .Cells(zz, 10)
z = z + 2
End If
Next zz
End With
Next nr
End Sub

der Löscht die Listen und das Formular
Private Sub CommandButton2_Click()
Dim nr As Long
For nr = 1 To 29
With Sheets("Produktgruppe" & CStr(nr))
If .Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then
.Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2) _
.End(xlUp).Row, 2)).ClearContents
End If
If .Cells(.Rows.Count, 3).End(xlUp).Row > 2 Then
.Range(.Cells(3, 3), .Cells(.Cells(.Rows.Count, 3) _
.End(xlUp).Row, 3)).ClearContents
End If
End With
Next nr
Range("H22:xZ200").Select
Selection.ClearContents
Range("H22").Select
End Sub
der senden das Formular an ein Mail als Anlage
Private Sub CommandButton4_Click()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String, wksMail As Worksheet
Set wksMail = Sheets(3)
AWS = Environ("USERPROFILE") & "\" & wksMail.Name & ".xls"
'temporäre Mappe erstellen
wksMail.Copy
With ActiveWorkbook
.SaveAs AWS
.Close
End With
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "test@test.at"
.Cc = Range("R11")
.Subject = "Materialanforderung zu " & Range("L13")
.Attachments.Add AWS
.Body = "Hallo, anbei eine Materialanforderung bitte um Bearbeitung. Siehe File in der  _
Anlage. Danke" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
Kill AWS 'temporäre Mappe löschen
End Sub


und das ist einfach ein Datumsfeld

'Datumsfeld

Private Sub DTPicker21_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal   _
_
_
CallbackField As String, CallbackDate As Date)
End Sub

Wäre echt Toll wenn jemand eine Idee hat!
Vielen dank
Babs

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:01:52
Hajo_Zi
heben den Balttschutz zu Begoinn auf .unprotect und setze ihn am Ende .protect.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:03:51
Werner
Hallo Babs,
einfach dein gewünschtes Blatt Schützen mit Passwort.
Im Workbook_Open dann folgenden Code:
Private Sub Workbook_Open()
Worksheets("DeinBlatt").Protect Password:="DeinPasswort", UserInterfaceOnly:=True
End Sub
Dann dürfen Änderungen am geschützten Blatt durch Markors vorgenommen werden, ohne dass dafür der Blattschutz aufgehoben werden muss.
Gruß Werner
Anzeige
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:15:17
Daniel
Hi
Es ist in Excel grundsätzlich so, dass ein Makro immer nur das machen kann, was auch dem Anwender erlaubt ist.
Wenn du also auf einem geschützten Blatt mit Makro arbeiten willst, musst das Makro dass Passwort kennen und im Code dann den Schutz aufheben (unprotect) und am Ende wieder aktivieren (protect)
Wenn du jetzt viele Makros hast und nicht jedes umarbeiten willst, könntest du noch folgendes tun:
Schreibe ein Macro, welches bei jedem Blatt den Schutz Aktiviert und dabei den Parameter "userinterfaceonly:=true" verwendet.
Sheets(...).Protect password:="xxx“, userinterfaceonly:=true

Damit geschützt gilt der Schutz nur für den Anwender und nicht für die Macros, für dann ungestört arbeiten können.
Allerdings muss dieses Makro dann bei jedem Öffnen erneut ausgeführt werden (z.b. Im WorkbooksOpen-Event), da das nur für eine Sitzung gilt und beim nächsten öffnen der Schutz wieder vollständig ist.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige