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

Sub Workbook_BeforeSave wird nicht aufgeführt

Sub Workbook_BeforeSave wird nicht aufgeführt
25.01.2005 16:47:30
Marion
Hallo,
beim Speichern einer Excel Datei sollen die Textlängen der Zellen B25 und B26 überprüft werden in allen Worksheets.
Das hatte bisher auch funktioniert. Jetzt hatte ich die Excel Datei unter einem anderen Namen gespeichert und der Code wird gar nicht mehr ausgeführt, auch keine Test-Messagebox wie Msgbox "Hallo".
An was kann das liegen ?
Vielleicht kann mir jemand weiter helfen.
Viele Grüße und besten Dank
Marion
Hier noch mein VBA-Code im Event Workbook_BeforeSave

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim zeilen1, zeilen2, zeilensumme, zeilensummeD, zeilensummeE, zeileni, anzahl, flag As Long
Dim x As Worksheet
Dim zeilenreal As Single
Dim titel, text As String
Dim teil1, teil2 As String
Dim textproj, textplan As String
flag = 0
For Each x In ThisWorkbook.Sheets  ' Schleife über Arbeitsblätter
titel = "Tabellenblatt " + x.Name
' Project Description / Projektbeschreibung
textproj = x.Cells(25, 2)
anzahl = Len(textproj) + 50 ' 50 Zeichen für Umbruch
zeilenreal = anzahl / 77  ' 77 Zeichen pro Zeile möglich
zeileni = CInt(zeilenreal)
If (zeilenreal - zeileni < 0) Then
zeilen1 = zeileni
Else
zeilen1 = zeileni + 1
End If
'Scope of Design Works / Erbrachte Planungsleistung
textproj = x.Cells(26, 2)
If x.Name = "Englisch" Then
anzahl = Len(textproj) + 23 + 10 ' 23 für Scope of ..., 10 für Umbruch
Else
anzahl = Len(textproj) + 28 + 10  ' 28 für Erbrachte ..., 10 für Umbruch
End If
zeilenreal = anzahl / 77   ' 77 Zeichen pro Zeile möglich
zeileni = CInt(zeilenreal)  ' Runden auf Ganzzahl
If (zeilenreal - zeileni < 0) Then
zeilen2 = zeileni
Else
zeilen2 = zeileni + 1
End If
' Zeilensumme abspeichern für letzte Messagebox
zeilensumme = zeilen1 + zeilen2
If x.Name = "Englisch" Then
zeilensummeE = zeilensumme
Else
zeilensummeD = zeilensumme
End If
text = "Das Projekt paßt wahrscheinlich nicht auf eine halbe Seite:" + _
Chr(10) + " Der Text in den Zellen B25 und B26 (Projektbeschreibung, Planungsleistung) ist mit " + _
CStr(zeilensumme) + " Zeilen länger als 14 Ausdruckzeilen."
If zeilensumme > 14 Then  ' Projekt passt nicht auf eine halbe Seite
MsgBox text, , titel
Else
flag = flag + 1  ' Projekt passt auf eine halbe Seite
End If
Next x
If flag = 2 Then ' also die Textlängen passen alle
titel = "  Die Textlängen in den Zellen B25 und B26 sind in beiden Tabellenblättern ok "
text1 = "Die Zellen B25 und B26 (Projektbeschreibung, Planungsleistung) ergeben folgende Zeilenlängen: "
text2 = " Englisch: " + CStr(zeilensummeE) + " , deutsch: " + CStr(zeilensummeD)
text3 = " Zeilen kleiner gleich 14 Zeilen. "
text = text1 + text2 + text3
MsgBox text, , titel
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Sub Workbook_BeforeSave wird nicht aufgeführt
Reinhard
Hi Marion,
ein Versuch, mach mal
application.enableevents=true
in der neuen Datei.
Gruß
Reinhard
AW: Sub Workbook_BeforeSave wird nicht aufgeführt
25.01.2005 17:24:14
Marion
Hallo Reinhard,
danke für den Tipp.
Nur weiss ich nicht, wo ich application.enableevents=true hinschreiben soll, also in die Events wäre vielleicht nicht so geschickt , denn die sollen ja "enabled" werden ?
Viele Grüße
Marion
AW: Sub Workbook_BeforeSave wird nicht aufgeführt
Reinhard
Hallo Marion,
haste Recht, das würde nix bringen :-)
Einfach folgende Sub laufen lassen:

Sub test()
Application.EnableEvents
End Sub

Gruß
Reinhard
AW: Sub Workbook_BeforeSave wird nicht aufgeführt
25.01.2005 18:32:57
Marion
Hallo Reinhard,
das stimmt, das müßte klappen.
Mir ist nun allerdings noch etwas anderes aufgefallen.
Meine Sicherheitseinstellungen waren "hoch", d.h. nicht unterzeichnete (signierte) Makros werden nicht ausgeführt. Nun habe ich die Sicherheitseinstellungen (findet man in den Symbolleisten für VBA) auf mittel gesetzt und meine Events laufen. Jubel !
Also mal vielen Dank für Deine Tipps, die haben mich auf die Idee gebracht, auch mal bei der Sicherheit zu gucken.
Viele Grüße
Marion
Anzeige

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige