Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
640to644
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
640to644
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Macros ohne Schaltfläche auslösen

Macros ohne Schaltfläche auslösen
27.07.2005 11:34:15
Binky
Ist es möglich ein Macro ohne die Bedienung einer Schaltfläche auszuführen?
Folgendes Problem: Ich möchte gerne einen Text in eine Zelle einfügen. Sobald dieser eingefügt ist soll der Blattschutz aktiviert werden, so dass niemand mehr etwas ändern kann.
Wobei ich noch eine zweite Frage hätte. Kann man bei VB ein Passwort für den Blattschutz hinterlegen? Wie macht man dieses möglichst sicher? (VB ist ja einsehbar).
Ich hoffe ihr könnt mir helfen.
Gruß
Binky

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 12:04:40
Heiko
Hallo Binky,
zu 1: Da kannst du das Worksheet_Change Ereigniss nehmen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
MsgBox "Hier kann der Code zum schützen rein"
Else
MsgBox "Das war nicht die Zelle auf die reagiert werden soll !", vbInformation
End If
End Sub

Zu 2: Den VBA Code kann man im VBE unter EXTRAS - EIGENSCHAFTEN VOM VBA PROJEKT - Reiter "SCHUTZ" per Passwort schützen, dann kann man den Code ohne Passwort nicht mehr einsehen. Ist zwar nicht unknackbar, aber für den normalen Anwender nicht zu überwinden.
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 14:31:22
Binky
Hallo Heiko,
zu 2. funktioniert wunderbar.
Zu 1. Was bedeutet (ByVal Target As Range)? Wenn ich das einfüge wird das Makro nicht mehr bei den anderen Makros angezeigt?!?
Zudem funktioniert es leider nicht. Wenn ich in die Zelle D6 etwas einfüge wird nichts ausgelöst.
Ich schreibe es dann so:

Private Sub Seitenschutz(ByVal Target As Range)
If Target.Address = "D6" Then
MsgBox "Hier kann der Code zum schützen rein"
Else
MsgBox "Das war nicht die Zelle auf die reagiert werden soll !", vbInformation
End If
End Sub

Eigentlich sollte dann doch eine MsgBox geöffnet werden.
Gruß
Binky
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 14:43:55
Heiko
Hallo Binky,
ist der VBA Level mit GUT bei dir korrekt, denn dann gehe ich davon aus das du die Standard Workbook und Worksheet Ereignisse mit den entsprechenden Parametern kennst.
Wenn nicht, dann erkläre mir noch mal genau was du machen willst.
Wie wird der Text eingefügt, per Makro oder per Hand ?
Geht es immer nur um eine bestimmte Zelle ?
Wieso willst du das Makro in der Makroliste sehen ?
...
Kann dein Problem noch nicht so ganz nachvollziehen.
Das "Private Sub Seitenschutz(ByVal Target As Range)" ist zumindest Blödsinn, da sich "ByVal Target As Range" auf die Rückgabewerte eines Worksheetsereignisses bezieht.
Gruß Heiko
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 15:07:44
Binky
Hallo Heiko. Beim VBA Level Gut hab ich mich wohl verklickt. Mein Fehler. Ich bin nicht wirklich fit drin.
Ich möchte gerne aus einem Programm eine Seite kopieren und diese in Excel mit strg + v einfügen. Das Programm ist branchenspeziefisch und fülllt mir dann beim einfügen in die Excel Tabelle ca. 20 Zellen aus.
Ich kopiere also aus dem einen Programm und füge in Excel ein. genau dann sollte ein Makro bzw. das Makro gestartet werden und die Arbeitsmappe schützen, so dass keine Daten verändert werden können.
In der Makroliste habe ich das Makro gerne, um es später leicher zu finden und zu bearbeiten. Sonst muß ich mir z.B. das Modul merken und dann das Makro suchen um etwas nachträglich zu verändern.
Und das hier: Das "Private Sub Seitenschutz(ByVal Target As Range)" ist zumindest Blödsinn, da sich "ByVal Target As Range" auf die Rückgabewerte eines Worksheetsereignisses bezieht.
verstehe ich leider auch nicht wirklich. Was sind denn die Rückgabewerte eines Worksheetsereignisses?
Hoffe ich mache nicht zu viele Umstände.
Gruß
Binky
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 15:22:30
Heiko
Hallo Biny,
diesen Code in das Codefenster der entsprechenden Tabelle.
Workbook und Worksheet Ereigenisse erscheinen nie in der Makro Liste, also dies auch nicht.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngIntersect As Range
' Überprüft ob eine Eingabe im benannetn Bereich gemacht wird.
' A1:A20,C1:C20 wäre also Zelle A1-A20 und C1-C20.
' Wenn du nur A1-A20 haben willst dann, Range("A1:A20")
Set rngIntersect = Application.Intersect(Range("A1:A20,C1:C20"), Target)
If Not rngIntersect Is Nothing Then
' Diese Zeile kann raus wenn es läuft, gibt halt nur den Hinweis dann nun geschützt wird.
MsgBox "Im Bereich, Blatt wird geschützt.", vbInformation
' Wenn in dem Bereich was eingegben wurd, dann Blatt schützen.
ActiveSheet.Protect Password:="Passwort"
End If
Set rngIntersect = Nothing
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 16:14:39
Binky
Habe es nun so übernommen.

Private Sub AAtest(ByVal Target As Range)
Dim rngIntersect As Range
' wobei mir rngIntersect auch in der Hilfe nicht wirklich was sagt.
Set rngIntersect = Application.Intersect(Range("D6"), Target)
If Not rngIntersect Is Nothing Then
msgbox "Im Bereich, Blatt wird geschützt.", vbInformation
ActiveSheet.Protect Password:="Passwort"
End If
Set rngIntersect = Nothing
End Sub

Wenn ich nun einen beliebigen Text in der Zelle D6 (will mal klein anfangen) eintrage passiert nichts.
Wird das Makro nicht automatisch nach Einfügen gestratet?
Gruß
Binky
Anzeige
AW: Macros ohne Schaltfläche auslösen
27.07.2005 17:04:39
Heiko
Hallo Binky,
wenn du jeden Code den ich dir gebe sofort veränderst ohne ihn mal so zu testen wie ich ihn poste, dann kann ich leider nicht helfen. Was bitte soll den dieses SUB (AAtest) starten ?!
Diese Zeile sollte übrigens so laufen:
Set rngIntersect = Application.Intersect(Range("D6"), Target)
Kannst du also so lassen.
Aber Private Sub Worksheet_Change(ByVal Target As Range) ist eine von EXCEL zur Verfügung gestellte Funktion die immer durchlaufen wird wenn sich im zugehörigen Tabellenblatt was ändert. Also nutze sie doch.
Teste es mal so und du wirst stauen.
Gruß Heiko
Anzeige
AW: Macros ohne Schaltfläche auslösen
28.07.2005 08:12:55
Binky
Hallo Heiko,
ich habs dann mal so versucht:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngIntersect As Range
Set rngIntersect = Application.Intersect(Range("D6"), Target)
If Not rngIntersect Is Nothing Then
msgbox "Im Bereich, Blatt wird geschützt.", vbInformation
ActiveSheet.Protect Password:="Passwort"
End If
Set rngIntersect = Nothing
End Sub

Das ganze steht in Modul 31. Sonst steht da nichts.
Funktioniert aber leider immer noch nicht.
Muß ich noch irgend etwas beachten?
Gruß Binky
AW: Macros ohne Schaltfläche auslösen
28.07.2005 09:54:31
Heiko
Hallo Binky,
ja !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Der Name der Funktion Worksheet_Change sagt doch schon was aus, nämlich das sie dann ausgeführt wird wenn im zugehörigen Arbeitsblatt was geändert wird.
Also nochmal, der Code muss in das Codefenster der Tabelle die du überwachen willst.
(z.B. Tabelle 1) und NICHT in ein Modul !!!
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Macros ohne Schaltfläche auslösen
28.07.2005 12:04:22
Binky
Hallo Heiko,
endlich blick ich durch. Eigentlich ganz logisch. Funktioniert auch alles und aus dem Staunen komme ich kaum noch raus. *G*
Danke noch mal,
Binky

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige