Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
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
Inhaltsverzeichnis

aut. Aktualisierung von Tabellenbereich

aut. Aktualisierung von Tabellenbereich
30.05.2017 07:46:05
Tabellenbereich
Hallo liebe Excelprofis,
Leider ging mein Beitrag wohl irgendwie verschüttet, deshalb noch einmal:
Mit folgenden Problem bin ich konfrontiert:
In einer Excelmappe habe ich mehrere umfangreiche Datenblätter.
Diese bestehen aus vielen untereinander angeordneten Bereichen mit jeweils einer bestimmten Anzahl von Spalten und Zeilen (kann sich erhöhen).
Die erste Spalte (A) des Bereiches ist eine verbundene Zelle mit einem Datum.
Die nachfolgenden Spalten enthalten Felder für Dateneingabe und Formeln, wobei die letzte Zeile des Bereiches (Spalte B bis AC) eine Auswertezeile (Summen, Mittelwerte) ist.
Die Datentabelle wächst ständig in dem ich eine Kopie des vorhergehenden Bereiches an diesen unmittelbar anhänge (Kopieren + Kopierte Zellen einfügen).
Bei einer Dateneingabe sollen die Formeln in der jeweiligen Zeile sowie in der Auswertezeile am Ende des Bereiches sowie eventuell benachbarte Zeilen aktualisiert werden.
Beim Kopieren des Bereiches braucht keine Aktualisierung erfolgen, dafür aber beim Löschen mehrerer markierter Datenfelder innerhalb des Bereiches.
Zur Zeit funktioniert die Aktualisierung bei Dateneingabe und das Löschen.
Beim Einfügen eines neuen Bereiches kommt eine Fehlermeldung. Wenn ich nach Beendigung der Fehlermeldung Daten eingeben möchte stürzt Excel ab.
VBA-Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
Dim Verbund_Zeile As Integer
ActiveWorkbook.Worksheets("Export_K4_FS").Select
Application.EnableEvents = False
If Range("A" & ActiveCell.Row).MergeCells = True Then
Verbund_ersteZeile = ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).Row
Verbund_letzteZeile = Verbund_ersteZeile + ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.  _
_
Cells(1, 1).MergeArea.Count - 1
'bei folgender Zeile Fehlermeldung (Laufzeitfehler -2147417... Methode Calculate für Range- _
Object fehlgeschlagen)
ActiveSheet.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Else
Target.Range(ActiveCell.Row & ":" & ActiveCell.Row).Calculate
End If
Application.EnableEvents = True
End Sub
Für die Hilfe im Voraus schon vielen Dank!

72
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 08:42:30
Tabellenbereich
Wichtiger Hinweis!
Da ich zur ersten Veröffentlichung dieses Beitrages (23.5.) nach einen Tag noch keine Antwort erhalten habe, das Problem aber dringend ist, hatte ich den Beitrag auch in das Microsoft-Forum (selber Nutzer, Titel ähnlich) gestellt.
Hatte dies aber vorher angekündigt.
Falls es deshalb Probleme gibt, bitte mir mitteilen!
Vielen Dank!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:44:49
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:44:58
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:00
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:37
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:38
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:38
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:39
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:39
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:39
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:40
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:51
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:52
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:52
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:53
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:53
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:54
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:45:54
Tabellenbereich
Wenn oben aufgeführte Information der Grund für die Nichtbeantwortung ist, bitte mir mitteilen.
Bitte dies zu entschuldigen!
Danke!
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 12:42:44
Tabellenbereich
Hallo thober
ich bin neu im Thread, bin nur reingegangen weil er Mordslang ist, und habe mir den Code aus der 1. Anfrage zum Testen in ein Blatt geladen. Dabei fiel mişr etwas auf was man bisher vielleicht schlicht und einfach übersehen haben könnte. Einen dummen Adressierungsfehler!!?
Schau mal hier:
dann verstehst du auch meine Methode hartnaeckige Fehler su suchen, indem ich mir Bereich anschaue.
Die MsgBox zeigen mir eine Zahl an, ist ja auch völlig korrekt! In unterer Zeile fehlt aber der Buchstabe "A"!
ActiveSheet.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
In meinen Augen ist das keine gültige Adresse, oder sehe ich das falsch? Warte mal auf deine Rückmeldung. Ich weiss nicht ob das alle Probleme löst, bin neu im Thread und habe das Beispiel noch nicht getestet. Mich interessiert aber schon ob ich da das "richtige Auge" hatte?
mfg Piet
     Verbund_ersteZeile = ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).Row
Verbund_letzteZeile = Verbund_ersteZeile + ActiveSheet.Range("A" & ActiveCell.Row). _
MergeArea. _
Cells(1, 1).MergeArea.Count - 1
'bei folgender Zeile Fehlermeldung (Laufzeitfehler -2147417... Methode Calculate für Range-  _
_
Object fehlgeschlagen)
MsgBox Verbund_ersteZeile
MsgBox Verbund_letzteZeile
Exit Sub
ActiveSheet.Range("A" & Verbund_ersteZeile & ":A" & Verbund_letzteZeile).Calculate

Anzeige
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 16:56:29
Tabellenbereich
Hallo Piet,
habe leider auch mit Deinem Lösungsvorschlag mit Excel abgeschossen.
Ich schätze, Du wirst wie ChrisL den Fehler nicht nachvollziehen können. Auch bei Dir wird es fehlerfrei laufen.
Werde morgen mit frisch gestarteten Rechner noch einmal probieren.
Melde mich, egal wie das Ergebnis aussieht.
Bis Morgen!
https://www.herber.de/bbs/user/113929.xlsm
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 10:59:53
Tabellenbereich
Hi
Mal folgende Zeile ersetzen:
Target.Range(ActiveCell.Row & ":" & ActiveCell.Row).Calculate
Target.EntireRow.Calculate
Und ich schätze generell wo ActiveCell.Row steht in Target.Row ändern.
cu
Chris
PS: Ein Link zum anderen Beitrag wäre hilfreich, weil es würde mich schon interessieren, was dort geantwortet wird.
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 14:30:49
Tabellenbereich
Hallo Chris
Vielen Dank für die Antwort!
Ich fang von hinten (mit den PS) an:
Meinen ersten Beitrag hatte ich letzte Woche (https://www.herber.de/cgi-bin/callthread.pl?index=1559910) gesendet. Da ich an dem Folgetag noch keine Antwort erhalten hatte, antwortete ich mir selbst mit der Aussage, dass ich jetzt es einmal mit einem anderen Forum probieren möchte. Da ich dabei das entsprechende Häkchen nicht setzte, wurde der Beitrag geschlossen und damit kamen natürlich keine weiteren Antworten.
Da ich in dem neuen Forum (MS-Office-Forum, der selbe Benutzer) ehrlicherweise gleich am Anfang darauf hingewiesen hatte, dass ich hier schon die Sache angefragt hatte, verweigerte man mir dort die Antwort (http://www.ms-office-forum.net/forum/showthread.php?p=1810530&posted=1#post1810530). Bevor ich einen Lösungsvorschlag erhalten hatte, hatte ich meinen Benutzer dort wieder gelöscht.
Es gibt also keine weiteren Antworten.
Zum Lösungsvorschlag:
Target.Range(ActiveCell.Row & ":" & ActiveCell.Row).Calculate hatte ich nur zum Abfangen eingetragen, wenn es keine verbundene Zellen in der aktiven Zeile gibt.
Diesen Fall habe ich bis jetzt noch nicht getestet.
Die Zeilen habe ich inzwischen geändert:
If Range("A" & ActiveCell.Row).MergeCells = True Then
Verbund_ersteZeile = ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).Row
Verbund_letzteZeile = Verbund_ersteZeile + ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).MergeArea.Count - 1
Else
Verbund_ersteZeile = ActiveCell.Row
Verbund_letzteZeile = ActiveCell.Row
End If
Application.EnableEvents = False
ActiveSheet.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Application.EnableEvents = True
Target.EntireRow.Calculate kann ich leider nur für eine Zeile verwenden. Ich benötige aber eine Lösung für mehrere Zeilen.
Ich lade einmal das zugehörige Excelblatt hoch. Die erste Spalte (Datum) enthält die verbundenen Zellen. Wenn ich in den Spalten 4 und 5 Werte eintrage, sollen sich nicht nur die Formel in der betreffenden Zeile aktualisieren sondern auch benachbarte Formeln (gleiche Anlage) sowie vor allem die letzte Zeile (Gesamt). Die Anzahl der Zeilen im Bereich kann sich ändern, weshalb ich erst die Größe des verbundenen Zellbereiches ermitteln muss.
Das habe ich auch hinbekommen.
Bei dem aktuellen Stand funktioniert mein Vorhaben auch wie geplant.
Erst wenn ich den gesamten Bereich kopiere (23.5. unter den 22.5.) funktioniert die ganze Sache nicht mehr: Keine Aktualisierung beim ersten Wert, Excel Absturz nach dem zweiten Wert.
https://www.herber.de/bbs/user/113890.doc
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 16:02:35
Tabellenbereich
Hi
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Else
Target.EntireRow.Calculate
End If
End With
End Sub

cu
Chris
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 08:09:34
Tabellenbereich
Hallo Chris,
Vielen Dank für den Lösungsvorschlag.
Bitte um Entschuldigung, dass ich jetzt erst antworte.
Leider hat der Lösungsvorschlag nicht zum Ziel geführt. Die in meinen Ergänzungen 16:25 beschriebenen Symptome gelten unverändert (Absturz bei Speichern unter.. nach Eingabe des 2. Wertes, keine Aktualisierung nach Kopieren/Einfügen des gesamten Bereiches für ein nachfolgendes Datum).
Ich möchte noch ergänzen, dass ich mittlerweile noch 2 Sachen hinzugefügt habe. Diese dürften aber hier nicht von Belang sein.
On Error Resume Next
Set aCell = Target
If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit Sub
If bolNoScreenUp = False Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
End If
Diese Zeilen stehen vor Deinem Text.
Den 1. Teil hatte mir schon etwas geholfen (Absturz erfolgte schon früher). Bei der Fehlersuche hatte ich Sinnloswerte beim Kopieren des Bereiches festgestellt.
Der 2. Teil war notwendig, weil ich - das ist ja die Grundlage des Ganzen - unter Diese Arbeitsmappe die aut. Aktualisierung ausgeschalten hatte. Mit Hilfe der globalen Variable wollte ich ein sinnloses 2. Abschalten vermeiden.
Nur nochmal der Hinweis:
Beim Kopieren des Bereiches soll keine Aktualisierung erfolgen. Nur beim Eintragen und Ändern von Werten bzw. der Anpassung von Formeln und es braucht auch nur dieses Arbeitsblatt angepasst zu werden.
Ich hoffe, Du kannst mir trotzdem noch helfen. Ich bin mit meinem Latein am Ende.
Vielen Dank im Voraus!
Anzeige
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 08:34:59
Tabellenbereich
Hi
Du schreibst viel aber sagst wenig. Im letzten Beitrag schreibst du:
Bei dem aktuellen Stand funktioniert mein Vorhaben auch wie geplant.
Erst wenn ich den gesamten Bereich kopiere (23.5. unter den 22.5.) funktioniert die ganze Sache nicht mehr: Keine Aktualisierung beim ersten Wert, Excel Absturz nach dem zweiten Wert.

Also bin ich davon ausgegangen, dass das Kopieren von Bereichen (mehrere "Blöcke" auf einmal) das Problem ist und habe den Code so geändert, dass auch die Änderung mehrerer Blöcke erkannt wird.
Jetzt schreibst du:
Nur nochmal der Hinweis:
Beim Kopieren des Bereiches soll keine Aktualisierung erfolgen.

Und wenn du den Muster-Code mal in eine neue Beispieldatei kopierst, dann stellst höchstwahrscheinlich fest, dass Excel gar nicht abstürzt. Somit wäre dann klar, dass es nichts mit dem Code zu tun hat, sondern mit deiner Datei (anderer Inhalt, den wir nicht kennen).
Wenn du mal eine Datei (kein Bild!) hoch lädst, mit der sich dein Fehler provozieren lässt, dann geht die Lösung sicherlich ganz fix. An die Theorie "Puffer leeren" glaube ich nicht. Entweder wurde im restlichen Code unsauber programmiert, die Datei ist korrumpiert oder einfach nur überladen.
cu
Chris
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 08:43:03
Tabellenbereich
Hi nochmal
Eine Theorie hätte ich noch:
Wenn die automatische Berechnung eingeschaltet ist. Dann machst du eine Änderung und die Neuberechnung beginnt. Das Change-Ereignis schaltet womöglich noch während der Neuberechnung die automatische Berechnung aus. So könnte ich mir einen Konflikt vorstellen.
Die automatische Berechnung erst nach erfolgtem Change auszuschalten bringt m.E. nichts.
cu
Chris
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 09:07:52
Tabellenbereich
Hatte auch an solche Konflikte gedacht.
Allerdings:
-habe ich die Neuberechnung schon manuell auf manuell gestellt (habe bis jetzt immer das nur das Blatt neu berechnet)
-habe schon in Workbook_open die automatische Berechnung ausgeschaltet:
Private Sub workbook_open()
Dim Kommentar_Var As String
Dim Drucker_Pos As Integer
Application.EnableEvents = False
'Diagramm(e) in Tabellenblatt "Tabelle3" (Name wird noch aktualisiert) erstellen
Diagramme_erstellen
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
bolNoScreenUp = True
Application.EnableEvents = True
'Druckeinstellungen für die Stammdaten im Tabellenblatt "Listen"
If ActiveSheet.name = "Listen" Then
Sheets("Listen").Range("$E$43").Value = Mid(ActivePrinter, InStrRev(ActivePrinter, "\")  _
+ 1, _
InStrRev(ActivePrinter, "auf") - InStrRev(ActivePrinter, "\") - 2)
DruckerAnzeigen
If Range("$E$43").Comment Is Nothing Then
Range("$E$43").AddComment
Range("$E$43").Comment.Visible = False
Kommentar_Var = Range("$E$43").Value
If Cells(39, 5) = "Kompletter Druckerpfad im Kommentar" Then
For Drucker_Pos = 1 To 12
If Cells(Drucker_Pos, 2) = Cells(43, 5) Then
If Left(Cells(Drucker_Pos, 3), 2) = "\\" Then
Kommentar_Var = Cells(Drucker_Pos, 3)
Kommentar_Var = Right(Kommentar_Var, Len(Kommentar_Var) - 2)
Kommentar_Var = Cells(Drucker_Pos, 2) & " auf " & Left( _
Kommentar_Var, InStr(Kommentar_Var, "\") - 1)
End If
End If
Next
End If
Range("$E$43").Comment.text text:=Chr(10) & Kommentar_Var
Range("$E$43").Comment.Shape.TextFrame.AutoSize = True
'            Range("$E$43").Comment.Shape.with = Len(Range("$E$43").Comment.Text)
End If
End If
ActiveWorkbook.Worksheets("Export_K4_FS").Select
End Sub

AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 09:48:10
Tabellenbereich
Bin gerade dabei, die Datei für ein mögliches Hochladen zurechtzustutzen.
Zunächst habe ich jetzt alle Tabellenblätter gelöscht, auf die das Tabellenblatt nicht zugreift, auch in VBA keine Zugriffe von den erforderlichen Modulen erfolgt.
Excel stürzt jetzt beim Speichern nicht ab.
Es bleibt da aber noch folgender Fehler.
Wenn ich den Bereich vom Datum 22.5. unter dem Bereich (für ein Datum 23.5.) kopiere, und dann die Werte am 22.5. ändere, werden die Formelergebnisse nicht aktualisiert.
Da obere Maßnahme für mich keine Lösung darstellt - ich brauche die gelöschten Tabellenblätter - kann man irgendwie den Absturz abfangen, z. B. (Kompromisse muss man eingehen) durch eine weitere Verzögerung mittels Timer?
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 09:56:53
Tabellenbereich
Hi
Problem Neuberechnung:
So kannst du testen, welcher Bereich nun effektiv für die Berechnung verwendet wird.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
              MsgBox .Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Address
Else
              Msgbox Target.EntireRow.Address
End If
End With
End Sub
Wenn das Ergebnis mit anderen, nicht neu berechneten Zellen zusammenhängt, dann ist das Resultat natürlich fehlerhaft.
Problem Absturz:
Ein Workaround fällt mir nicht ein. Du musst das Problem bei der Ursache angehen. Identifiziere das Blatt, welches den Absturz verursacht und erstelle es neu.
cu
Chris
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 10:50:55
Tabellenbereich
habe wieder das Häkchen für das Offenhalten des Threads vergessen, sorry.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 10:48:59
Tabellenbereich
So habe jetzt alle jetzt für einen einfachen Funktionstest nicht notwendigen Tabellenblätter, Zeilen (im aktuellen Tabellenblatt), VBA-Routinen und Namen gelöscht und anonyme Werte eingetragen. Dein Lösungsvorschlag funktioniert in vollem Umfang, meiner (der Ursprüngliche) allerdings auch:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
Dim aCell As Range
On Error Resume Next
Set aCell = Target
If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit  _
Sub
If bolNoScreenUp = False Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
End If
If Range("A" & ActiveCell.Row).MergeCells = True Then
Verbund_ersteZeile = ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).Row
Verbund_letzteZeile = Verbund_ersteZeile + ActiveSheet.Range("A" & ActiveCell.Row). _
MergeArea.Cells(1, 1).MergeArea.Count - 1
Else
Verbund_ersteZeile = ActiveCell.Row
Verbund_letzteZeile = ActiveCell.Row
End If
Application.EnableEvents = False
ActiveSheet.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Application.EnableEvents = True
End Sub
Damit erübrigt sich wohl das Upload der Datei, oder?
Das ist allerdings für mich keine Lösung, weil ich das gelöschte brauche. Auf den Tabellenblättern befinden sich die Auswertungen.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 11:00:11
Tabellenbereich
Hi
Mit diesen Informationen kann ich auch nicht helfen.
cu
Chris
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 16:01:18
Tabellenbereich
Gut habe es jetzt geschafft die Datei so klein wie möglich zu schlagen. Der Excel-Zusammenbruch ist immer noch.
Um den Excel-Absturz zu provozieren:
- in die Zellen M29 bis M31 beliebige Werte eingeben und anschließend
- Speichern
Vielleicht ist das jetzt irgendwo eine Kleinigkeit.
Ich sehe sie aber nicht - bin mittlerweile Excel-blind.
https://www.herber.de/bbs/user/113925.xlsm
Excel Absturz?
31.05.2017 16:16:54
ChrisL
Hi
Kann mal bitte noch jemand anders testen. Bei mir gibt es keinen Absturz.
cu
Chris
AW: Excel Absturz?
31.05.2017 16:49:45
thober
Ich hatte zwar Excel vor dem Test komplett geschlossen und neu gestartet, trotzdem wiederholte sich das Problem.
Werde diesen Dateirumpf aber morgen noch einmal nach dem Rechnerstart gleich noch einmal testen. Vielleicht gibt es ja bei mir ein Rechnerproblem, das irgendwo noch Daten rumvagabundieren.
Bitte bis morgen um Geduld. Werde mich nach dem Test sofort melden.
Vielen Dank für die bisherige Unterstützung!
AW: Excel Absturz?
01.06.2017 10:10:50
thober
Hallo Chris,
der Absturz erfolgt erst zum Speichern, nicht bei der Werteeingabe!
Und erst ab den 2. Wert, Ausnahme ist die verbundene Zelle in Spalte A.
Wenn ich in A29 den Wert ändere, kann ich in I29 noch einen Wert eingeben und Speichern ohne Absturz.
Wenn ich aber in A29, I29 und J31 Werte eingebe führt das Speichern zum Absturz.
Der Absturz erfolgt auch nach Werteingabe ausschließlich in I29 und J31 mit anschließenden Speichern.
Ich hatte auch schon eine neue Mappe erzeugt und dort die Formeln und VBA-Skripte hineinkopiert. Das Problem besteht fort.
AW: Excel Absturz?
01.06.2017 10:20:25
ChrisL
Hi
Ja war mir schon klar, dass der Absturz erst beim Speichern kommt, aber ich habe da trotzdem keinerlei Probleme.
cu
Chris
AW: Excel Absturz?
01.06.2017 10:31:32
thober
Ich lasse jetzt die Datei von unserer IT auf einen anderen Rechner testen.
Werde mich wieder melden, sobald ein Ergebnis vorliegt.
Trotzdem schon mal vielen Dank. Deine Hinweise waren auf jeden Fall hilfreich.
AW: Excel Absturz?
01.06.2017 11:05:06
thober
Ich habe jetzt die Datei von einen IT testen lassen.
Dort kommt es auch zum Absturz, allerdings mit einer Fehlermeldung (Userbild
).
Außerdem gab er mir noch diese Informationen:
Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: EXCEL.EXE
Anwendungsversion: 16.0.4534.1000
Anwendungszeitstempel: 58ecd9d3
Fehlermodulname: EXCEL.EXE
Fehlermodulversion: 16.0.4534.1000
Fehlermodulzeitstempel: 58ecd9d3
Ausnahmecode: c0000005
Ausnahmeoffset: 00152cde
Betriebsystemversion: 6.1.7601.2.1.0.256.48
Gebietsschema-ID: 1031
Zusatzinformationen zum Problem:
LCID: 1031
skulcid: 1031
Im abgesicherten Modus (Excel /safe) gab es keine Absturz.
Kann hier auch meine Excel-Version (Microsoft Office Home and Business 2016) eine Rolle spielen?
SEHException Fehler
01.06.2017 12:58:54
ChrisL
Hi
Kenne den Fehler nicht, aber...
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_winother/appcrash-excelexe-application-version-16063662036/4b82fb9a-834e-4c1c-ade4-80b61f1cf4c0
Punkt 3 (kein Zugriff auf Default Drucker)
In deinem Code wird ein Druckmarko aufgerufen, das aber nicht in der Beispieldatei enthalten war.
Dass es im gesicherten Modus läuft, würde auf ein Add-In Problem schliessen lassen.
Gemäss Fehlermeldung steht das Problem in Zusammenhang mit einer externen Komponente. Ausser dem Drucker-Thema kann ich keine externen Sachen erkennen. Was mir aber auffällt ist, dass du in der Schnellzugriffsleiste zwei ungewöhnliche Elemente drin hast.
Userbild
Ansonsten müsste m.E. mal deine IT ran:
- Windows/Office-Update
- Office Repair laufen lassen
- Virenscanner
- Neuinstallation
- usw.
cu
Chris
AW: DruckerAnzeigen
01.06.2017 13:37:05
Piet
Hallo zusammen
jetzt wo ich die Nachricht von Chris lese erinnere ich mich dran das es ein Makro "DruckerAnzeigen" gibt. Es wurde ausgelöst beim aktiviern von Blatt "Listen", ich habes im Beispiel deaktivert, es störte mich. In dem Code werden auch noch Commends bearbeitet!
Waere schön wenn der Fehler da zu suchen ist. Dann haetten wir ihn wenigstens auf die wahre Ursache eingekreist.
mfg Piet
AW: DruckerAnzeigen
01.06.2017 15:18:33
thober
Hallo Piet,
bitte diesen Makel zu entschuldigen. Aber ich hatte gestern durchweg 6 Stunden daran gesessen, nach und nach Tabellenblätter und Tabellenbereiche sowie Makros und Namen zu löschen. Da war mir den Inhalt von diesem Skript letztendlich durch die Lappen gegangen.
Ich hatte, bevor ich die Datei unserer IT zugesendet hatte diese aber noch gelöscht. Das hatte leider keine positiven Konsequenzen.
Ich werde weiter suchen. Sobald ich selber etwas finde, werde ich mich natürlich noch einmal melden.
Einstweilen vielen Dank für die Unterstützung!
AW: DruckerAnzeigen
01.06.2017 16:28:18
Piet
Hallo thober
du brauchst dich nicht entschuldigen wenn nach 6 Stunden was schief geht. Ist halt so....
Wenn du deine Datei überprüfen willst habe ich noch zwei schöne Codes für Workbbook Namen Prüfung.
Im Dialog von MS wirst du keine Namen finden die einen "#REF" Fehler aufweisen, - sie erscheinen nicht!!
Diese Names geistern aber immer noch als "Leiche im Keller" in der Datei rum, sollten besser gelöscht werden.
Diese Makro listet in einer beliebigen Tabelle alle Namen auf -mit REF Fehler- !! - Und kann sie löschen.
mfg Piet
'Workbook Namen auflisten
Sub Names_auflisten()
Dim Txt As String, i, n As Integer
MsgBox ThisWorkbook.Names.Count & "  Names"
Range("B2:D500").Clear  'Löschen
'Schleife für alle Names auflisten
For i = 1 To ThisWorkbook.Names.Count
Txt = ThisWorkbook.Names(i).RefersTo
Cells(i + 3, 2) = i
Cells(i + 3, 3) = ThisWorkbook.Names(i).Name
Cells(i + 3, 4) = " ' " & ThisWorkbook.Names(i).RefersTo
If InStr(Txt, "#REF") Then n = n + 1: _
Cells(i + 3, 4).Font.ColorIndex = 3
Next i
If n > 0 Then MsgBox n & "  #REF Fehler in Name Liste"
End Sub
'Namen mit #REF Fehler löschen
Sub Ungültige_Names_löschen()
Zahl = ThisWorkbook.Names.Count
For i = Zahl To 1 Step -1
Txt = ThisWorkbook.Names(i).RefersTo
If InStr(Txt, "#REF") Then ThisWorkbook.Names(i).Delete
Next i
Names_auflisten
End Sub

AW: DruckerAnzeigen
02.06.2017 09:01:10
thober
Hallo Piet,
danke für den Service.
Allerding scheint das Tool bei mir nicht zu funktionieren. Nach jeden Neustart der Mappe zeigt das Makro immer noch die gleichen 79 Namen.
Außerdem fehlt hier glaub' ich etwas. Das Makro schreibt die Namen in das aktuelle Tabellenblatt. Das ist vom Nutzer bestimmt nicht immer gewollt. Ich habe mir deshalb erlaubt, es etwas anzupassen:
Public Function ExistiertBlatt(blattname As String) As Boolean
Dim blatt As Object
ExistiertBlatt = False
For Each blatt In ThisWorkbook.Sheets
If blatt.name = blattname Then
ExistiertBlatt = True
Exit For
End If
Next blatt
End Function

'Workbook Namen auflisten
Sub Names_auflisten()
Dim Txt As String, i, n As Integer
MsgBox ThisWorkbook.Names.Count & " Names"
If ExistiertBlatt("Ref_Namen") = False Then
ThisWorkbook.Worksheets.Add.name = "Ref_Namen"
End If
ThisWorkbook.Worksheets("Ref_Namen").Select
ThisWorkbook.Worksheets("Ref_Namen").UsedRange.ClearContents
Range("B2:D500").Clear 'Löschen
'Schleife für alle Names auflisten
For i = 1 To ThisWorkbook.Names.Count
Txt = ThisWorkbook.Names(i).RefersTo
Cells(i + 3, 2) = i
Cells(i + 3, 3) = ThisWorkbook.Names(i).name
Cells(i + 3, 4) = " ' " & ThisWorkbook.Names(i).RefersTo
If InStr(Txt, "#REF") Then n = n + 1: _
Cells(i + 3, 4).Font.ColorIndex = 3
Next i
If n > 0 Then MsgBox n & " #REF Fehler in Name Liste"
End Sub
AW: DruckerAnzeigen
02.06.2017 11:11:15
thober
Hallo,
Der Excel-Absturz taucht nicht mehr an dieser Stelle auf - auch nicht bei der großen ursprünglichen Datei.
Den Grund konnte ich nicht nachvollziehen. Ich kann nur vermuten, dass es der Aufruf von Excel im abgesicherten Modus bewirkte.
Die jetzige Problembeschreibung kann man jetzt so formulieren:
- Kopieren Bereich A unmittelbar unterhalb als Bereich B,
- Eingabe eines Wertes in eine Zelle in Bereich A
---> Fehlermeldung:
Userbild
Nach Start des Debuggers wird die Zeile:
.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
in deinem Skript:
(durch Hinzufügen der Zeilen 3 und 4 erfolgt der Laufzeitfehler noch nicht beim Kopieren)
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
Set aCell = Target
If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit  _
Sub
With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
MsgBox .Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Address
.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Else
MsgBox Target.EntireRow.Address
Target.EntireRow.Calculate
End If
End With
End Sub
Gebe ich nach dem Stoppen des Debuggers einen 2. Wert ein, stürzt Excel ab.
Versuche ich nach Eingabe des ersten Wertes die Mappe zu schließen, scheint sich eine Endlosschleife zu öffnen (der Eieruhr-Ersatz vibriert)
Wenn ich nach über 5 Minuten über den Taskmanager das Programm schließe, erscheint die erwartete Abfrage, ob die Mappe gespeichert werden soll.
Bei Bestätigung erfolgt Absturz. Bei "Nicht-Speichern" wird man nur der Verwendung des Inhalts der Zwischenablage gefragt, danach ordnungsgemäßes Schließen der Mappe und Excel.
Ich habe danach die Mappe im abgesicherten Excel geöffnet. Das Problem ist hier identisch.
Auch die von Microsoft empfohlene Vorgehensweise (bis einschließlich Punkt 2) hat keine Änderung herbeigeführt:
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_winother/appcrash-excelexe-application-version-16063662036/4b82fb9a-834e-4c1c-ade4-80b61f1cf4c0
Punkt 1 funktioniert nicht, wegen Serverinstallation.
AW: DruckerAnzeigen
02.06.2017 13:01:43
Piet
Hallo thober
habe gerade deine Anttwort gesehen. mein Code für Namen auflisten - ist nicht für den Nutzer gedacht!!
Den interessieren Workbook Namen überhaupt nicht. Das sind Hilfsmittel für Programmierer zum Testen!!
Bei der Programmentwicklung füge ich dann kurz eine neue Tabelle ein, lasse das Makro laufen, und lösche sie wieder!
Mich interessiert ja als Programmierer ob ich Fehler in der Datei habe und lösche sie. - Der Kunde sieht davon nicht!
Anbei noch ein kleiner Code für Eingaben in Spalte A damit Target in dem Falle -nicht ausgeführt wird-!!
Kannst du auf jede beliebige andere Spalte selbst erweitern.
mfg Piet
If aCell.Column = 1 Then Exit Sub 'Aussprung bei Spalte A !!
AW: DruckerAnzeigen
06.06.2017 10:23:06
thober
Hallo Piet,
vielen Dank für Deine Antwort.
Das Verhindern der Aktualisierung beim Kopieren habe ich mit
'Set aCell = Target
'If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit Sub
abgefangen, nachdem ich festgestellt hatte, dass er beim Kopieren von Zeilen in eine Quasi-Endlosschleife steigt, da Excel dann jede bis zur maximal möglichen Spalte (sind, glaub' ich, deutlich über 1000) neu berechnen möchte.
Das hatte auch geholfen:
Ich hatte in den Skript-Zeilen Messagebox-Aufrufe zum Test eingebaut. Die wurden beim Zeilen Kopieren nicht angesprochen. Die Calculate-Aufforderungen wurden also, wie erhofft, nicht angesprochen.
Deine Formel ist eine gute Alternative. Allerdings würde ich ein Problem bekommen, wenn die Änderung des Inhaltes einer Zelle in Spalte A in Formeln anderer Zellen ausgewertet werden müsste.
Ich möchte ja die Aktualisierung beim Kopieren von Zellen ausschalten, nicht beim Ändern des Zellinhaltes.
Dein Tool mit den Namen hätte doch aber trotzdem bei mir Funktionieren müssen, oder?
Excel läuft das Tool auch ordnungsgemäß durch. Allerdings listet er bei mir bei jeden Aufruf (nach Löschen der Zellen) immer die gleichen Namen auf.
AW: DruckerAnzeigen
06.06.2017 11:42:05
thober
Habe jetzt die Variable aCell herausgenommen und direkt mit "target" gearbeitet.
Jetzt konnte ich Werte sowohl in den kopierten Bereich als auch in der Kopie eingeben und anschließend Speichern ohne Absturz.
Mit einer Ausnahme:
Bei den geänderte Zellen darf keine aus der Spalte A dabei sein
Bei Deiner Funktion (If Target.Column = 1 Then Exit Sub~f~) hängt sich Excel auf (keine Rückmeldung) bei meiner Zeile (~f~If Target.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit Sub~f~) kommt es zum Absturz.
Es scheint, als ob die Ereignisprozedur an sich ein Problem mit verbundenen Zellen hat.
Wäre schön, wenn dies noch jemand austesten könnte (~f~Private Sub Worksheet_Change(ByVal Target As Excel.Range)), so dass ein Abfangen innerhalb der Prozedur nichts bringt.
Sage schon mal Danke!
AW: DruckerAnzeigen
06.06.2017 11:46:13
thober
Habe leider wieder vergessen den Haken zu setzen.
Deshalb noch einmal diesen Beitrag.
AW: SEHException Fehler
01.06.2017 15:09:34
thober
Hallo Chris,
vielen Dank für Deine Hinweise!
Die Ausführungen auf der Microsoftseite muss ich mir in Ruhe durchlesen. Aber es ist schon ungewöhnlich, dass Excel so unterschiedlich reagiert - von "funktioniert" bis Absturz ohne Fehlermeldung.
Den Skript mit dem Druckerroutinen im Tabellenblatt "Listen" hatte ich beim "Kleinmachen" der Mappe übersehen. Man konnte ausgewählte Bereich auf dem Blatt mit ausgewählten Druckern (einschl. PDF) ausgeben. Das war den großen Aufwand beim stückchenweisen Reduzieren und Anonymisieren der Datei bei jeweils anschließenden "Absturz-Test" geschuldet. Bitte die Irritationen, die ich damit hervorgerufen habe zu entschuldigen. Das tut mir leid. Ich hatte die Datei heute morgen davon bereinigt (kompletter Skript-Inhalt von Blatt "Listen") bevor ich sie nach nochmaligen vielfältigen Test-Variationen unserer IT zukommen ließ. Auf diese Fehlermeldung dürften Druckerroutinen in Makros keine Rolle gespielt haben - es gab keine mehr.
Die beiden Symbole waren auch an (für das Hochladen gelöschte) Makros gebunden. Mit dem ersten habe ich ausgewählte Tabellenblätter unter einem definierten Name mit festgelegten Titel als PDF gespeichert. Mit dem 2. Makro habe ich Diagramme erstellt. Daran hatte ich allerdings noch gearbeitet, was der Grund dafür war, dass ich das Symbol in der Schnellstartleiste für Testaufrufe platziert hatte.
Diese waren auch nicht mehr in der Mappe, welche an die IT ging.
Ich werde weiter suchen. Vielleicht finde ich ja doch noch irgend etwas.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 09:00:02
Tabellenbereich
Also noch einmal die Fehlerbeschreibung:
1.
Nach Öffnen der Datei trage ich in ein Feld in dem "Wert" steht einen solchen ein. Excel aktualisiert die Formelergebnisse in der aktuellen Zeile und in der letzten Zeile - alles so wie gewünscht.
Auch das Speichern funktioniert fehlerfrei
2.
Jetzt trage ich einen 2. (3., 4. etc.) Wert in ein entsprechendes Feld ein. Er aktualisiert korrekt die aktuelle Zeile wie auch die letzte Zeile.
Wenn ich jetzt allerdings speichere, stürzt mir Excel ab.
3.
Nach dem Öffnen der Datei kopiere ich den Bereich, weil ich die Werte für ein nachfolgendes Datum eintragen möchte. Das Kopieren funktioniert.
Das Eintragen des ersten Wertes aktualisiert nicht die Formeln - nicht die in der aktuellen Zeile und auch nicht die in der Ergebniszeile.
4.
Sobald ich dann noch einen 2. Wert eingebe stürzt Excel ab.
Ich hoffe, das Problem ist jetzt deutlich.
Eine Beispieldatei ist schwierig Ich werde es versuchen. Die Datei ist sehr groß (über 12 MB). Allein dieses Tabellenblatt hat rund 3000 Zeilen mit über 30 Spalten - und davon sind in der Datei 3 Blätter.
Ein weiteres hat gut 1Mio. Formeln.
Eine Aktualisierung der Datei dauert zwischen 3 und 5 Minuten.
Werden sehen, ob ich einen Dummy hinbekomme.
AW: aut. Aktualisierung von Tabellenbereich
30.05.2017 16:25:39
Tabellenbereich
Habe jetzt noch einmal mehrere Versuche unternommen, um den Fehler genau zu beschreiben:
1 Wert (D1 oder D2 oder D4) geändert - Speichern unter.. : funktioniert
2 oder mehr Werte /D1 und D2 oder D3 und D4) geändert : Aktualisierung funktioniert bei anschließenden Speichern unter... Excel-Absturz,
ganzer Bereich kopiert (unterhalb des Bereiches) und 1 Wert geändert : keine Aktualisierung - anschl. Speichern unter... : Excel-Absturz.
Es scheint einen Puffer nicht zu leeren.
Warum select eines anderen Blatts?
30.05.2017 16:09:01
EtoPHG
Hallo,
...und warum genügt das nicht?
Private Sub Worksheet_Change(ByVal Target As Range)
Static LastCol As Long
If LastCol = 0 Then LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Cells(Target.Row, 1).MergeArea.Resize(, LastCol).Calculate
End Sub
Gruess Hansueli
AW: Warum select eines anderen Blatts?
31.05.2017 08:28:45
thober
Hallo Hansueli,
Vielen Dank für den Lösungsvorschlag.
Bitte auch Dich um Entschuldigung, dass ich jetzt erst antworte.
Leider hat mir Dein Lösungsvorschlag nicht geholfen:
Es erfolgt keine Aktualisierung der Formelergebnisse, weder der aktuellen Zeile noch in der letzten Zeile.
Die betreffende Zeile (Überschrift) verweist nicht auf ein anderes Arbeitsblatt, sondern auf das aktuelle. Die Zeile war als Sicherung gedacht Ich habe sie aber inzwischen entfernt. Hier jetzt noch einmal der komplette Text nach Anpassung von ChrisL' Lösungsvorschlag (leider auch nicht geholfen: weiterhin Absturz bzw. Arbeitsverweigerung an bestimmter Stelle).
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
Dim aCell As Range
On Error Resume Next
Set aCell = Target
If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit  _
Sub
If bolNoScreenUp = False Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
End If
With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Else
Target.EntireRow.Calculate
End If
End With
End Sub
Die ersten 2 If-Anweisungen sind von mir:
Den 1. Teil hatte mir schon etwas geholfen (Absturz erfolgte schon früher). Bei der Fehlersuche hatte ich Sinnloswerte beim Kopieren des Bereiches festgestellt.
Der 2. Teil war notwendig, weil ich - das ist ja die Grundlage des Ganzen - unter Diese Arbeitsmappe die aut. Aktualisierung ausgeschalten hatte. Mit Hilfe der globalen Variable wollte ich ein sinnloses 2. Abschalten vermeiden.
Nur nochmal der Hinweis:
Beim Kopieren des Bereiches soll keine Aktualisierung erfolgen. Nur beim Eintragen und Ändern von Werten bzw. der Anpassung von Formeln und es braucht auch nur dieses Arbeitsblatt angepasst zu werden.
Ich hoffe, Du hast noch Lösungsvorschläge, ich weiß nicht weiter.
Vielen Dank im Voraus!
AW: Warum select eines anderen Blatts?
31.05.2017 09:54:49
thober
Ich weiß nicht, ob ich das Häkchen für das Offenhalten des Threads gesetzt hatte, deshalb nur kurz diese Antwort:
Nach Entfernen mehrerer Tabellenblätter (keine Lösung - ich brauche die Blätter) fallen die Abstürze weg.
Ohne Beispielmappe, keine weitere Hilfe
31.05.2017 11:48:51
EtoPHG

AW: Ohne Beispielmappe, keine weitere Hilfe
31.05.2017 16:20:12
thober
Habe sie zwar schon als Antwort auf ChrisL hochgeladen, trotzdem hier den offenbar defekten Rumpf (in einigen Stunden die Datei von 12MB durch Löschen von Tabellenblättern, den Großteil des betroffenen Tabellenblattes, Namen und VBA-Skripten auf diese Größe gebracht und anonymisiert). Trotzdem lässt sich der Fehler noch reproduzieren:
- in die Zellen M29 bis M31 beliebige Werte eingeben und anschließend
- Speichern
https://www.herber.de/bbs/user/113928.xlsm
Wieso eigentlich so unfreundlich? Um die Datei unter 300kB zu bringen und Stück für Stück zu prüfen hat 6 Stunden gedauert.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 12:59:59
Tabellenbereich
Hallo thober - Wiederholung
ich sehe im Augenblick meinen Beitrag nicht im Forum, weiss nicht ob die 1.AW korrekt gesendet wurde, wiederhole sie!
ich bin neu im Thread, bin nur reingegangen weil er Mordslang ist, und habe mir den Code aus der 1. Anfrage zum Testen in ein Blatt geladen. Dabei fiel mişr etwas auf was man bisher vielleicht schlicht und einfach übersehen haben könnte. Einen dummen Adre
Schau mal hier:
dann verstehst du auch meine Methode hartnaeckige Fehler su suchen, indem ich mir Bereich anschaue.
Die MsgBox zeigen mir eine Zahl an, ist ja auch völlig korrekt! In unterer Zeile fehlt aber der Buchstabe "A"!
ActiveSheet.Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
In meinen Augen ist das keine gültige Adresse, oder sehe ich das falsch? Warte mal auf deine Rückmeldung. Ich weiss nicht ob das alle Probleme löst, bin neu im Thread und habe das Beispiel noch nicht getestet. Mich interessiert aber schon ob ich da das "
mfg Piet
Verbund_ersteZeile = ActiveSheet.Range("A" & ActiveCell.Row).MergeArea.Cells(1, 1).Row
Verbund_letzteZeile = Verbund_ersteZeile + ActiveSheet.Range("A" & ActiveCell.Row). _
MergeArea. _
Cells(1, 1).MergeArea.Count - 1
'bei folgender Zeile Fehlermeldung (Laufzeitfehler -2147417... Methode Calculate für Range- _
_
Object fehlgeschlagen)
MsgBox Verbund_ersteZeile
MsgBox Verbund_letzteZeile
Exit Sub
ActiveSheet.Range("A" & Verbund_ersteZeile & ":A" & Verbund_letzteZeile).Calculate
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 16:35:17
Tabellenbereich
Hallo Piet,
mir ging es ähnlich wie Dir. Ich bin auch neu in diesem Forum.
Ich habe es mit einem sehr schwachen W-LAN zu tun und einer riesigen Excel-Datei (12MB, über 1GB Arbeitsspeicherbedarf). Die Seite war lange nicht verschwunden. Habe aber jetzt dazugelernt.
Ich weiß das hier normalerweis .Rows stehen müsste, hatte ich auch schon drin, ebenso das. Range mit Spalteneingabe.
ActiveSheet.Range(Rows(Verbund_ersteZeile), Rows(Verbund_letzteZeile)).Calculate
Das half allerdings nichts. Auch mit dem Vorschlag von ChrisL stürzte mir das System ab. Die Lösung war Deinem ähnlich.
Ich werde aber trotzdem Deinem Vorschlag testen und das Ergebnis melden. Bitte um etwas Geduld.
Vielen Dank aber trotzdem schon einmal!
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 16:42:47
Tabellenbereich
noch eine Ergänzung den Laufzeitfehler habe ich abgefangen, in dem ich die Größe des Targets geprüft habe:
Set aCell = Target
If aCell.Columns.Count > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Then Exit Sub
Da beim Kopieren von Zellbereichen ohnehin keine Aktualisierung erfolgen soll.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 17:33:15
Tabellenbereich
Hallo
ich glaube wir haben ein bisschen aneinander vorbei geredet. - Es geht nicht um Rows! - Die Spalten fehlen!!
Ein Range Bereich wird immer durch Spalten + Zeilen Definiert, z.B. Range("A1:C1")
Dabei erkenne ich jetzt im Augebnblick sogar noch einen zweiten Fehler!! - Bermerkst du ihn auch?
Ich habe ja im obigen Beispiel die 1. Spalte in "A", die 2. Spalte ist hier aber der Buchstabe "C"
Im Klartext, du brauchst um den Range Bereich zu definieren zwei Spalten Angaben als Buchstaben!
In deinem Fall ist es günstiger über Cells() mit Resize zu gehen, weil du nur mit Resize den Range Bereich durch eine Zahl nach Rechts oder unten erweitern kannst!! Der Code dafür lautet dann:
ActiveSheet.Cells(Verbund_ersteZeile, 1).Resize(1, Verbund_letzteZeile).Calculate - oder so:
ActiveSheet.Range("A" & Verbund_ersteZeile).Resize(1, Verbund_letzteZeile).Calculate
Cells(Cells(Verbund_ersteZeile, 1) - heisst konkret, die Zelle "ersteZeile" in der Spalte 1, 1 = Spalte A, 2=B, 3=C usw.
Resize(1, Verbund_letzteZeile) - heisst, erweitere den Bereich nach Rechts um den Wert "letzteZeile"
(Korrekt sollten die Variablen so lauten: - Verbund_erstSpalte, und Verbund_letzteSpalte - (statt Zeile)
Bau das ganze mal als kleines seperates Test Makro mit Select auf und schau was dann passiert!
Die Werte für ersteZeile + letzteZeile kannst du ja beliebig veraendern
mfg Piet
Sub Test
Verbund_ersteZeile = 1
Verbund_letzteZeile = 3
ActiveSheet.Cells(Verbund_ersteZeile, 1).Resize(1, Verbund_letzteZeile).Select ' oder so:
ActiveSheet.Range("A" & Verbund_ersteZeile).Resize(1, Verbund_letzteZeile).Select
MsgBox "Okay"   '-- Hier wird garantiert eine Fehlermeldung kommen!!
ActiveSheet.Range(Verbund_ersteZeile, Verbund_letzteZeile).Select
End Sub

AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 08:53:10
Tabellenbereich
Hallo Piet,
danke für Deine Antwort.
Die abgespeckte Version scheitert nach Neustart des Rechners mit Deiner ersten Lösung wie auch mit der von ChrisL.
Deine aktuelle Lösung gibt die Fehlermeldung wie erwartet bei
ActiveSheet.Range(Verbund_ersteZeile, Verbund_letzteZeile).Select
~f~
funktionieren tut:
~f~
ActiveSheet.Rows(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Select
Das hattest Du, glaub' ich übersehen, denn die Begründung hast Du ja oben geliefert.
Die Markierung und das Infofenster werden korrekt angezeigt.
Aber hier habe ich auch keinen Konflikt erwartet.
Es funktioniert ja auch die Lösung von ChrisL
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer'With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
MsgBox .Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Address
'        .Range(Verbund_ersteZeile & ":" & Verbund_letzteZeile).Calculate
Else
MsgBox Target.EntireRow.Address
'        Target.EntireRow.Calculate
End If
End With
End Sub
Der Zeigt die Bereichsadresse hier völlig korrekt an.
Der Absturz entsteht erst, wenn ich die .Calculate-Zeilen vom Kommentierhäkchen "befreie".
Irgendwie scheint meine Excel-Installation kaputt zu sein.
Es gibt bei mir aber keine Fehlermeldung bei .Calculate Das Excel stürzt konsequent ab.
Ich hatte ganz am Anfang dort eine Schleife. Die bringt aber bei mir von der Geschwindigkeit überhaupt nichts. Ist damals aber auch nicht abgestürzt.
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 17:38:31
Tabellenbereich
Nachtrag
Frage: stehen die verbundenen Zellen immer in der Spalte A, oder veraendert sich das?
Sonst müsstest du die erste Spalte auf jeden Fall immer mit ermitteln und einfügen!!
mfg Piet
AW: aut. Sorry - falsch verstanden !!
31.05.2017 18:26:48
Piet
Hallo
Sorry, alles zurück. - habe mich geirrt!
Ich habe jetzt erst das Beispiel geladen und gesehen das ich voll daneben liege.
In Spalte A geht es ja um Zeilen nach unten, nich um verbunden Zellen nach Rechts.
Mein Fehler, habe mich geiirt. Schaue mir jetzt das Beispiel genauer an ...
mfg Piet
AW: aut. Sorry - falsch verstanden !!
01.06.2017 09:06:06
thober
Kein Problem.
Ich bin ja sehr froh, dass mir überhaupt jemand helfen will.
Die Höhe des Spaltenverbundes kann sich aber ändern. Er kann also 5, 10, 14 etc. Zellen umfassen und das innerhalb eines Arbeitsblattes, da sowohl ein Produkt wie auch eine Anlage hinzukommen kann.
Die "alten" Bereiche bleiben z. B. bei 19 Zeilen. Den Bereichen ab den 10.6. (Datum frei gewählt) werde ich 2 Zeilen hinzufügen müssen.
AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 08:58:17
Tabellenbereich
Ja, zu 99%.
Mir fällt gerade keine Gelegenheit ein, wo das anders wäre.
In dem halben Jahr, wo ich daran arbeite, ist auch nichts anderes vorgekommen.
Ich habe auch keine Lust, die Möglichkeit einer anderen Spalte in Betracht zu ziehen.
Irgendwo ist Schluss mit Nutzerkonfort.
Also nur Spalte "A".
AW: aut. Aktualisierung von Tabellenbereich
31.05.2017 21:58:58
Tabellenbereich
Hallo thober
Thread wieder Offen gestellt für thober. Bitte schliessen wenn Problem erledigt.
ich bin mir nicht 100 % sicher ob ich einen Fehler entdeckt habe, prüfe es bitte selbst in der Praxis.
Nach vielen Versuchen und über 10 Rettungsdateien hatte ich vielleicht endlich den "richtigen Riecher"
Ich habe den Bereich zum Berechnen von -GanzeSpalten- in einen definierten Range Bereich geaendert.
Die Berechnung erfolgt jetzt von Range("Dx:AZx"), das sind 50 Spalten. Sonst Bereich erweitern.
Danach war der Eingabefehler in M28-31 bei mir weg. - Schau bitte mal wie das bei dir ist?
Ich nehme an das Excel sich beim Berechnen an den verbundenen Zellen in Spalte A aufhaengt, ohne einen
Laufzeitfehler anzuzeigen!! Anders kann ich mir den Effekt nicht erklaeren. Waere schön wenn es jetzt klappt.
Die MsgBoxen für Adresse habe ich zur Ansicht noch drin gelassen, wenn es klappt bitte löschen.
mfg Piet
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Verbund_ersteZeile As Integer
Dim Verbund_letzteZeile As Integer
With ThisWorkbook.Worksheets("Export_K4_FS")
If .Range("A" & Target.Row).MergeCells = True Then
Verbund_ersteZeile = .Range("A" & Target.Row).MergeArea.Cells(1, 1).Row
With .Range("A" & Target.Row + Target.Rows.Count - 1)
Verbund_letzteZeile = .MergeArea(.MergeArea.Cells.Count).Row
End With
MsgBox "Bereich  " & .Range("D" & Verbund_ersteZeile & ":AZ" & Verbund_letzteZeile). _
Address
'Bereich von Spalte D bis Spalte AZ Berechnen
.Range("D" & Verbund_ersteZeile & ":" & "AZ" & Verbund_letzteZeile).Calculate
Else
'MsgBox "Target  " & Target.EntireRow.Address
Target.EntireRow.Calculate
End If
End With
End Sub

AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 09:23:29
Tabellenbereich
Hallo Piet,
danke für die schnelle und zeitige Antwort.
Habe lediglich die erste zu berechnende Spalte auf "B" geändert.
Leider keine Besserung meines Leidens:
Nachdem ich in die Felder M29 bis M31 einen Wert eingegeben habe und dann speichere, verabschiedet sich Excel kommentarlos.
Immerhin, basierend auf den Aussagen von Dir und ChrisL kann ich schlussfolgern, dass die Mappe nicht defekt ist, sondern wohl eher meine Excel-Installation. Zumal ich ja jetzt auch schon mal eine neue Mappe erstellt und die Formeln von der alten Mappe in die neue kopiert hatte.
Werde zunächst einmal versuchen an einen anderen Rechner zu kommen. (Hier nicht so einfach)
AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 09:50:38
Tabellenbereich
Hallo Piet,
hier noch einmal zur Fehlereingrenzung:
Absturz erfolgt nach der Eingabe des 2. Wertes, egal in welcher Spalte der erste und der 2. Wert eingetragen wurden, mit einer Ausnahme:
Die verbundene Zelle in Spalte A zählt nicht mit. Das heißt:
Ich kann in A29 und I29 einen Wert eintragen und Speichern ohne Absturz. Wenn ich dann aber in J32 noch einen Wert eintrage und speichere, dann Excel-Absturz.
Noch einmal zur Klarstellung:
Der Absturz erfolgt bei mir erst zum Speichern!
AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 12:47:07
Tabellenbereich
Hallo thober
die IT Meldung sagt mir nichts, weil ich kein IT Fachmann bin. Habe mir Excel Hobby maessig selbst beigebracht.
Ich habe noch einen Lösungsvorschlag, s.Beispieldatei, nenne es aber ausdrücklich zweit- oder drittklassige Lösung, weil es nicht Optimal ist. Weiss man aber nicht mehr weiter denke ich mir auch solche Lösungen aus. Ist einfaches Denken aus der Praxis.
Im Target habe ich das Berechnen für Bereich gelöscht, indem ich mir nur den Eingabebereich in Spalte F1-O3 notiere.
Nach der Eingabe kann man zuerst die Datei speichern, was dann hoffentlich ohne den berühmten Absturz erfolgt!!?
Nach dem Speichern durch ein seperates Makro berechnen lassen, und schauen was passiert?
Wenn es nicht klappt hat man wenigstens die Eingabe gespeichert. Was haelst du davon?
mfg Piet
https://www.herber.de/bbs/user/113956.xlsm
AW: aut. Aktualisierung von Tabellenbereich
01.06.2017 14:20:53
Tabellenbereich
Hallo Piet,
erst mal recht herzlichen Dank!
ich bin noch am Überlegen. Die Nutzer, meine Wenigkeit ausgenommen, können sich voraussichtlich mit dieser Lösung nicht anfreunden.
Bevor ich auf den Gedanken mit der Bereichsaktualisierung kam, hatte ich in den Optionen auf "manuell berechnen" geschaltet und in die Symbolleiste für diese Arbeitsmappe das Symbol "Blatt neu berechnen" gestellt. Das dauert unwesentlich länger, dafür benötige ich aber keinen VBA-Code.
Die Problem-Tabellenblätter (mit minutenlangen Rechnen) sind andere. Und dieses Tabellenblatt gibt es in der Mappe noch 2x (_SS, _NS).
Die Leute wollen aber die sofortige Aktualisierung. Schon dieser Button "Blatt neu berechnen" ist zu viel. Zumal man nach dem Datei öffnen erst einmal den "Löschen"-Button betätigen muss, um noch Zeit zu gewinnen gegenüber "Blatt neu berechnen".
Ausschließen tue ich Deinen Lösungsvorschlag auf keinen Fall. Ich muss nur noch mal in Ruhe nachdenken.
Dein Skript ist trotzdem für mich sehr interessant - für eine Feststellung ob Werte geändert wurden vor Aktualisierungen vor Auswerteoperationen (Diagramme anpassen etc.) bzw. vor dem Schließen, auch für die umfangreicheren Tabellenblätter.
Allerdings muss ich noch sehen, ob das für dieses und die Schwester-Tabellenblätter bei mittlerweile jeweils über 120 Bereichen effektiv ist.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige