2.2k Aufrufe
Gefragt in Tabellenkalkulation von acr Mitglied (215 Punkte)
Hallo Exelgemeinde

Habe folgendes Problem:
Auf Tabellenblatt1 habe ich einen CommandButton1 eingefügt. Mit diesem Button soll eine Löschung der Zellen A8-M54 auf dem ausgeblendeten Tabellenblatt12 ausgelöst werden.
Eine bereits bestehende Lösung mit CommandButton2 auf dem Tabellenblatt12 funktioniert mit folgendem Code:

Private Sub CommandButton2_Click()
Dim e
ActiveSheet.Unprotect
erg = MsgBox("Sollen die Eingaben wirklich gelöscht werden??", vbExclamation + vbYesNo, "Wirklich Löschen?")
If erg = vbYes Then
Range("A8:M54").ClearContents
Else
MsgBox ("Daten wurden NICHT gelöscht !!!")
End If
ActiveSheet.Protect
End Sub

Wie bereits erwähnt ist das Tabellenblatt 12 ausgeblendet und die Löschung sollte über das Blatt 1 erfolgen.
Bereits in Voraus vielen Dank für Lösungsansätze

Gruß Horst

5 Antworten

0 Punkte
Beantwortet von acr Mitglied (215 Punkte)
Hallo

Muß noch hinzufügen, das der Button auf Blatt 12 nur funktioniert, wenn ich das Blatt eingeblendet habe.

Gruß Horst
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Horst,
einfach das Tabellenblatt mit einfügen.

Sheets(12).Range("A8:M54").ClearContents

Gruß
fedjo
0 Punkte
Beantwortet von acr Mitglied (215 Punkte)
Hallo Exelgemeinde

Habe Code geändert. Funktioniert auch einwandfrei aber nur, wenn Blatt "Abgabe" sichtbar ist. Wenn ich das Blatt ausblende, wird mir ein Laufzeitfehler 1004 --Die Select-Methode des Worksheet konnte nicht ausgeführt werden--.
Frage: Wo liegt denn hier mein Fehler???

Private Sub CommandButton1_Click()
Dim varPW As Variant
'Variable, in die das Passwort, das in eine Inputbox eingetragen wird, geschrieben wird.
varPW = InputBox("Diese Funktion ist nur berechtigten Personen erlaubt und daher mit einem Passwort geschützt.")
'Wenn die Variable leer ist (leer, wenn kein Passwort eingegeben wurde) oder wenn die Variable _
den Zustand "False" hat (False, wenn die Abbrechen-Schaltfläche betätigt wurde), dann Prozedur beenden
If varPW = "" Or varPW = False Then Exit Sub
'Abfrage ob eingetragenes Passwort korrekt ist. Wenn das Passwort korrekt war, eine Meldung am _
Bildschirm ausgeben. Meldung hier nur für dieses Beispiel. Anstelle der Zeile mit der Messagebox-Funktion, _
müsste dann das weitere Makro zwischen der Zeile mit der "If-Anweisung" und dem Wort "Else" aufgeführt werden
If varPW = "hs2303" Then
'Jetzt folgt die Löschung

Sheets("Abgabe").Select
ActiveSheet.Unprotect
erg = MsgBox("Sollen die Eingaben wirklich gelöscht werden??", vbExclamation + vbYesNo, "Wirklich Löschen?")
If erg = vbYes Then
ActiveSheet.Range("$A$5:$M$54").ClearContents
Else
MsgBox ("Daten wurden NICHT gelöscht !!!")
End If
ActiveSheet.Protect
Sheets("Arztrechnungen").Select
Else
MsgBox "Das war leider das falsche Passwort", vbCritical, "Passwortfehler..."
End If

End Sub


Bitte um Hilfe

Gruß Horst
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Horst,

ich bin leider kein Vba-Kenner, aber falls es darum geht das Tabellenblatt Abgabe erst wieder einzublenden, dann füge zwischen den beiden Zeilen

Sheets("Abgabe").Select
ActiveSheet.Unprotect

noch diese Zeile ein:
Sheets("Abgabe").Visible = True

Nachdem Dein Vorgang abgeschlossen ist, kannst Du mit
Sheets("Abgabe").Select
ActiveWindow.SelectedSheets.Visible = False

diese dann wieder ausblenden.

Habe dazu mal den Makrorekorder benutzt und hoffe das es für
Dich so auch ohne irgendeine andere Fehlermeldung möglich ist.

In diesem Sinne... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Horst,
es ist nicht nötig das Tabellenblatt (Abgabe) Aus und Einblenden.

Private Sub CommandButton1_Click()
Dim varPW As Variant
'Variable, in die das Passwort, das in eine Inputbox eingetragen wird, geschrieben wird.
varPW = InputBox("Diese Funktion ist nur berechtigten Personen erlaubt und daher mit einem Passwort geschützt.")
'Wenn die Variable leer ist (leer, wenn kein Passwort eingegeben wurde) oder wenn die Variable _
den Zustand "False" hat (False, wenn die Abbrechen-Schaltfläche betätigt wurde), dann Prozedur beenden
If varPW = "" Or varPW = False Then Exit Sub
'Abfrage ob eingetragenes Passwort korrekt ist. Wenn das Passwort korrekt war, eine Meldung am _
Bildschirm ausgeben. Meldung hier nur für dieses Beispiel. Anstelle der Zeile mit der Messagebox-Funktion, _
müsste dann das weitere Makro zwischen der Zeile mit der "If-Anweisung" und dem Wort "Else" aufgeführt werden
If varPW = "hs2303" Then
'Jetzt folgt die Löschung
Sheets("Abgabe").Unprotect
erg = MsgBox("Sollen die Eingaben wirklich gelöscht werden??", vbExclamation + vbYesNo, "Wirklich Löschen?")
If erg = vbYes Then
Sheets("Abgabe").Range("$A$5:$M$54").ClearContents
Else
MsgBox ("Daten wurden NICHT gelöscht !!!")
End If
Sheets("Abgabe").Protect
Else
MsgBox "Das war leider das falsche Passwort", vbCritical, "Passwortfehler..."
End If
End Sub

Gruß
fedjo
...