619 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo

Habe mir in diesem Forum vor Jahren diese Excel Datei mit Makro erstellen lassen, hat bis vor kurzen alles funktioniert.

Seit der Umstellung auf Office 365, ich nutze diese Datei Beruflich.

Hat sich ein Fehler eingeschlichen der die Abrechnung unbrauchbar macht.

Es solle auf den (Tabellenblatt Einzelwerte) Zellbereiche nach dem Ausdrucken gelöscht werden.

Der Fehler besteht darin das die Zellbereiche jetzt nach einigen Ausdrucken auf dem Tabellenblatt Abrechnung gelöscht werden. Fehler ist in der Datei nochmals beschriebe  .

Habe die Datei hochgeladen verwendete Passwörter sind (PW)  für Blattschutz & (vbasch) für Vba Editor.

https://www.file-upload.net/download-13869510/Ausschussware.xlsm.html

Hoffe ich konnte mein Problem verständlich beschreiben.

Beste Grüße

Hans

10 Antworten

0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)

Hallo Hans,

probiere mal die folgende Version:

Sub Einzelwerte()
Dim strPfad As String, strDatei As String

Sheets("Abrechnung").Visible = True
Application.ScreenUpdating = False
Sheets("Abrechnung").Unprotect Password:="PW"
Sheets("Einzelwerte").Unprotect Password:="PW"

Sheets("Abrechnung").Range("C7") = Sheets("Abrechnung").Range("C7") + 1
strPfad = Sheets("Abrechnung").Range("J6")
strDatei = Sheets("Abrechnung").Range("I6") & ".xlsx"
Sheets("Abrechnung").Copy
With ActiveSheet.UsedRange
.Value = .Value
ActiveSheet.Protect Password:="PW"
End With
'ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
ActiveWorkbook.SaveAs strPfad & strDatei
ActiveWindow.Close

With Worksheets("Einzelwerte")
  .Range("A6") = Date
  .Range("A8:F10").ClearContents
  .Range("A13:F15").ClearContents
  .Range("A18:F20").ClearContents
  .Range("A23:F25").ClearContents
  .Range("A28:F30").ClearContents
  .Range("A33:F35").ClearContents
  .Range("A38:F40").ClearContents
  .Range("A43:F45").ClearContents
  .Range("A8").Select
End With
Sheets("Abrechnung").Protect Password:="PW"
'Sheets("Abrechnung").Visible = xlVeryHidden
Sheets("Einzelwerte").Protect Password:="PW"
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.

werde es zeitnahe testen.

Besten dank für dein Interesse.

Hans
0 Punkte
Beantwortet von

Hallo M.O.

beim 2. Durchlauf endet es in der Fehlermeldung "Eine Datei mit dem Namen D:\Desktop\Sicherungen\Lieferschein-Nummer 1.xlsx " ist bereits vorhanden

Besten Dank - Hans

everyone interested

         
0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)
Hallo Hans,

ich hatte mir das Makro nur im Bezug auf das Löschen angesehen. Der Fehler kommt daher, dass der Dateiname für die Kopie nicht an die automtisch hochzählende Lieferscheinnummer angepasst wird.

Schreibe im Tabellenblatt "Abrechnung" in das Feld I6 die folgende Formel: ="Lieferschein-Nummer "&C7

Dann sollte der Fehler künftig nicht mehr auftauchen.

Gruß

M.O.
0 Punkte
Beantwortet von
HALLO M.O.

Besten Dank für deine weitere Hilfe, werde es heute Abend austesten.

Der Fehler ist bisher auch noch nie aufgetreten, gib es eine Erklärung dafür das es bisher problemlos lief.

Besten Dank an alle die uns hier weiterhelfen !

Hans
0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)
Hallo Hans,

von hier aus kann ich nicht nachvollziehen, warum der Fehler erst jetzt auftritt. Eventuell wurde mal das Makro oder das Tabellenblatt geändert.

Gruß

M.O.
0 Punkte
Beantwortet von

Hallo

Problem gelöst, neues aufgetreten.

Nach ca. zwei Durchläufen erscheint folgende Fehlermeldung

Nach neuen starten vom Mako, wird folgendes markiert

Habe ich (als blutiger Laie) das Makro vielleicht falsch eingefügt, (Modul 1 ) am Anfang steht bei mir 

(Option Private Module) 

Wenn ich in Excel über die Schaltfläche Makros diese aufrufe wird mir kein Name angezeigt

Gruß

Hans

0 Punkte
Beantwortet von m-o Profi (16.2k Punkte)

Hallo Hans,

ergänze das Makro wie folgt, wenn das Blatt Einzelwerte aufgerufen werden soll:

With Worksheets("Einzelwerte")
  .Range("A6") = Date
  .Range("A8:F10").ClearContents
  .Range("A13:F15").ClearContents
  .Range("A18:F20").ClearContents
  .Range("A23:F25").ClearContents
  .Range("A28:F30").ClearContents
  .Range("A33:F35").ClearContents
  .Range("A38:F40").ClearContents
  .Range("A43:F45").ClearContents
  .Activate
  .Range("A8").Select
End With

Das Makro ist richtig eingefügt und durch die Deklaration als Private Modul wird das Makro nicht angezeigt. Damit soll z.B. verhindert werden, dass ein Makro, das einer Schaltfläche zugewiesen ist, aus einem anderen Tabellenblatt gestartet werden kann.

Gruß
M.O.

0 Punkte
Beantwortet von

Hallo

yes Besten Dank an alle die sich die Zeit nehmen hier anderen zu Helfen yes

Besonderen Dank an M.O. mein Makro läuft wieder wie am ersten Tag!

Dank an Michael für die Tipps.

Gruß

Hans

...