Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Macro nur einmal verwenden ...

Macro nur einmal verwenden ...
07.04.2008 19:46:00
Peter
Schönen guten Abend an alle,
ich habe mir, im Forum und wälzen in zwei Büchern, folgende Funktion, wie man so schön sagt „zusammengeschustert“. Klappt auch, fast so, wie ich mir das vorgestellt habe.
Der Makro an sich klappt einwandfrei, sobald der Vordruck geöffnet wird, und er richtige User ruft den Vordruck auf, erscheint in einem Feld das aktuelle Tagedatum und in einem anderen Feld das jeweilige Namenskürzel.

Sub workbook_open()
Benutzername_Datum
End Sub



Sub Benutzername_Datum ()
If Application.UserName = "Vorname Nachname" Then
'Datum
Range("T1").Select
ActiveCell.FormulaR1C1 = "=Matrix!R[18]C[10]"
'Namenszeichen
Range("AA1").Select
ActiveCell.FormulaR1C1 = "=Matrix!R[2]C[4]"
Range("H9").Select
Else: Exit Sub
'Selection.ClearContents
End If
End Sub


Folgendes Problem bekomme ich nicht hin !!
Der Vordruck, wird nun nach der Bearbeitung gespeichert. Muß der Vordruck erneut an einem anderen Tag noch einmal geladen werden – startet sich natürlich auch wieder mit workbook_open,
der Makro und setzt wieder Datum und Namenskürzel. Das Namenskürzel wäre nicht das Problem – aber das Datum !
Gibt es eine Funktion, das der Makro nur einmal funktioniert – oder das der Makro, nach dem Speichern, nicht mehr funktioniert oder … oder … ?!?!
Er soll nach erneutem öffnen nicht wieder automatisch das aktuelle Datum setzen, das einmal gespeicherte Datum soll so bleiben, wie es gespeichert wurde!
Gruß Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro nur einmal verwenden ...
07.04.2008 19:53:19
Herbert
Hi,
setz in eine Zelle ein Zeichen, dass du beim Öffnen abfragst.
mfg Herbert

AW: Macro nur einmal verwenden ...
07.04.2008 20:00:00
Peter
n´Abend,
geht das nicht ohne ein solche (evt´) Abfrage ?!
Der Vordruck wird von etlichen Leuten mit benutzt (er ist nicht freigegeben). Wenn es möglich ist, einfach nur erneut Laden - ohne irgenwelche abfragen - und beim Datuim tut sich nichts.
Gruß Peter

Einmal Makro
07.04.2008 20:11:53
ransi
HAllo
Versuch es mal so:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
On Error Resume Next
Application.Run "Modul1.tschuess"
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub tschuess()
Dim e
'Dein Code
For Each e In Application.VBE.ActiveVBProject.VBComponents
If e.Name = "Modul1" Then
    MsgBox "...und Tschüß!"
    Application.VBE.ActiveVBProject.VBComponents.Remove (e)
Next
End Sub

Der Zweite Code gehört ins Modul1.
Zweckmäßigerweise solltest du da keinen Code reinpacken den du später nochmal brauchst.
ransi

Anzeige
End if vergessen...
07.04.2008 20:15:00
ransi
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
    On Error Resume Next
    Application.Run "Modul1.tschuess"
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub tschuess()
    Dim e
    'Dein Code
    For Each e In Application.VBE.ActiveVBProject.VBComponents
        If e.Name = "Modul1" Then
            MsgBox "...und Tschüß!"
            Application.VBE.ActiveVBProject.VBComponents.Remove (e)
        End If
    Next
End Sub

Anzeige
AW: Macro nur einmal verwenden ...
07.04.2008 20:10:00
Daniel
Hi
wenn man mit Vordrucken arbeitet, macht man es in der Regel so, daß man per Makro eine neue Datei erstellt und dann das Vorlagenblatt dort reinkopiert. Alle weiteren Aktionen werdem dann in dieser Datei ausgeführt.
Dann werden die Makros im Allgemeinen Modul und in DieseArbeitsmappe nicht mit kopiert.
ebenso kann die Vorlagendatei schreibgeschützt werden, dh. es ist sichergestellt, das sie nicht aus versehen überschrieben und verändert wird
Gruß, Daniel

AW: Macro nur einmal verwenden ...
07.04.2008 20:31:53
Tino
Hallo,
hier mal eine andere Idee.
Zur Beschreibung benutze ich einfach mal einen Auszug aus der Hilfe.
In diesem Beispiel wird zunächst die SaveSetting-Anweisung verwendet, um Einträge in der Windows-Registrierung (oder in der .INI-Datei auf 16-Bit Windows-Plattformen) für die als appname angegebene Anwendung vorzunehmen. Anschließend wird die GetSetting-Funktion verwendet, um eine der Einstellungen anzuzeigen. Da das Argument default angegeben wird, wird auf jeden Fall ein Wert zurückgegeben. Namen von Abschnitten (section) können mit GetSetting nicht abgerufen werden. Abschließend entfernt die DeleteSetting-Anweisung alle Einträge der Anwendung.
Beispiel:

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
SaveSetting ThisWorkbook.Name, "MeinDatum", "MeinDatum", Date
End Sub
Private Sub Workbook_Open()
If Date = GetSetting(ThisWorkbook.Name, "MeinDatum", "MeinDatum") Then
MsgBox "Datei war heute schon offen!"
End If
End Sub
'wird es nicht mehr benötigt,
'kann es hiermit wieder gelöscht werden
Sub LöscheEintragWieder()
DeleteSetting ThisWorkbook.Name, "MeinDatum"
End Sub


Kannst du damit etwas anfangen?
Gruß
Tino

Anzeige
Am einfachsten mit Eigenschaften,...
07.04.2008 22:00:08
Renee
und zwar so, Peter:

Private Sub Workbook_Open()
Dim tcDP
Dim bAddIt As Boolean
bAddIt = True
For Each tcDP In ThisWorkbook.CustomDocumentProperties
If tcDP.Name = "ErstelltVon" Then bAddIt = False
Next
If bAddIt Then
ThisWorkbook.CustomDocumentProperties.Add _
"ErstelltAm", False, msoPropertyTypeDate, Date
ThisWorkbook.CustomDocumentProperties.Add _
"ErstelltVon", False, msoPropertyTypeString, Application.UserName
End If
Tabelle1.Cells(1, 1) = ThisWorkbook.CustomDocumentProperties("CreatedBy")
Tabelle1.Cells(2, 1) = Format(ThisWorkbook.CustomDocumentProperties("CreatedAt"), _
"dd.mm.yyyy")
End Sub


GreetZ Renée

Anzeige
AW: Am einfachsten mit Eigenschaften,...
08.04.2008 02:55:00
Peter
morgen,
Danke an alle ! !
werde es heute nachmittag alles mal in Ruhe ausprobieren ...
Gruß Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige