Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel hängt sich immer in Makro auf

Forumthread: Excel hängt sich immer in Makro auf

Excel hängt sich immer in Makro auf
27.01.2014 13:10:49
Pascal
Excel hängt sich mit meinem Makro bei Arbeitskollegen auf
Guten Tag
In einer grösserern Arbeitsmappe hab ich u.a. folgenden Code, um eine Grafik zu erstellen:
Sub Zaehlen() 'Anzahl Vorkomniss pro Wert in Spalte P zählen
Dim objDic As Object, varVal As Variant, lngZeile As Long
Set objDic = CreateObject("scripting.dictionary")
For lngZeile = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
varVal = Cells(lngZeile, 16).Value
objDic(varVal) = objDic(varVal) + 1
Next
lngZeile = 1
With Worksheets("Grafik")    'Tabellenname anpassen
.UsedRange.Clear
For Each varVal In objDic
Debug.Print varVal, objDic(varVal)
lngZeile = lngZeile + 1
.Cells(lngZeile, 1).Value = varVal
.Cells(lngZeile, 2).Value = objDic(varVal)
Next
End With
objDic.RemoveAll
Set objDic = Nothing
End Sub
Wenn ich dieses Makro auf meinem PC selber starte so läuft das ohne Probleme und erstellt mir auch
Problemlos meine Grafik
Wenn ich aber dieses Makro – in der gleichen Datei durch einen meiner Arbeitskollegen starten lasse
so hängt sich bei denen das Makro irgendwie auf. Excel wird dann inaktiv grau und hängt sich mit dem Fehler
Excel reagiert nicht mehr auf.
Woran mag das liegen ?
Wir haben alle die genau gleiche Excel-Version, die genau gleichen Rechner, gleichviel Arbeitsspeicher, die gleichen
Addins installiert etc..
Fehlt meinen Kollegen evt. irgend was noch auf Ihren Rechnern (DLL oder so ?)
Besten Dank für Eure Tips !

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel hängt sich immer in Makro auf
27.01.2014 15:05:54
Peter
Hallo Pascal,
bist Du denn sicher, dass der erste Teil, ohne Referenzierung auf ein Tabellenblatt, die richtigen Werte liefert?
Gruß Peter

AW: Excel hängt sich immer in Makro auf
28.01.2014 07:12:54
Pascal
Guten Tag Peter
Besten Dank für Deine Antwort. Ich muss ehrlich sagen, dass ich mit diesem Code nicht sonderlich schlau werde. Diesen hatte ich mal vor einiger Zeit hier im Forum erhalten.
Was genau meinst Du (oder besser.... wie genau ?) mit Referenzierung auf ein Tabellenblatt ?
Der Code erstellt immer auf dem Tabellenblatt "Grafik" eine Grafik
Was also genau müsste ich mal versuchen zu ändern oder anzupassen ?
Herzlichen Dank für die Hilfe
Pascal

Anzeige
AW: Excel hängt sich immer in Makro auf
28.01.2014 11:05:28
Peter
Hallo Pascal,
dann versuche es einmal mit der hier beigefügten Version:
Option Explicit
Sub Zaehlen() 'Anzahl Vorkomniss pro Wert in Spalte P zählen
Dim objDic    As Object
Dim varVal    As Variant
Dim lngZeile  As Long
Set objDic = CreateObject("scripting.dictionary")
With Worksheets("Grafik")    'Tabellenname anpassen
For lngZeile = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
If Trim$(.Cells(lngZeile, 16).Value)  "" Then
varVal = .Cells(lngZeile, 16).Value
objDic(varVal) = objDic(varVal) + 1
End If
Next lngZeile
lngZeile = 1
.UsedRange.Clear
For Each varVal In objDic
Debug.Print varVal, objDic(varVal)
lngZeile = lngZeile + 1
.Cells(lngZeile, 1).Value = varVal
.Cells(lngZeile, 2).Value = objDic(varVal)
Next varVal
End With
objDic.RemoveAll
Set objDic = Nothing
End Sub

Gruß Peter

Anzeige
AW: Excel hängt sich immer in Makro auf
28.01.2014 12:32:43
Pascal
Ich werd das gleich mal probieren.
Schon mal herzlichen dank für Deinen code

AW: Excel hängt sich immer in Makro auf
28.01.2014 13:16:43
Pascal
Hallo Peter
also... hab mal Deinen Code getestet.
Leider bleibt der immer bei der Zeile stehen:
If Trim$(.Cells(lngZeile, 16).Value) "" Then
Fehlermeldung:
Fehler beim Kompilieren:
Unzulässiger oder nicht ausreichend definierter Verweis
Zudem..
Das Makro schreibt dann mit Debug.Print keine Zahlen in die Spalten A und B auf dem
Tabellenblatt "Grafik"
diese Zahlen werden dann ja verwendet um auf diesem Tabellenblatt "Grafik" entsprechend diesen Werten eine Säulengrafik anzuzeigen.
was mach ich falsch ?

Anzeige
AW: Excel hängt sich immer in Makro auf
28.01.2014 14:02:28
Rudi
Hallo,
Cells.SpecialCells(xlCellTypeLastCell).Row
würde ich nicht nehmen. Das kann sonst was sein. Genauso schwammig wie UsedRange.
Besser cells(rows.count, GarantiertGefüllteSpalte).End(xlUp).Row
Gruß
Rudi

AW: Excel hängt sich immer in Makro auf
29.01.2014 13:28:46
Pascal
Hallo zusammen
Es läuft nun ! :-)
und zwar so:
Sub Zaehlen() 'Anzahl Vorkomniss pro Wert in Spalte P zählen
Dim objDic    As Object
Dim varVal    As Variant
Dim lngZeile  As Long
Set objDic = CreateObject("scripting.dictionary")
With Worksheets("Grafik")    'Tabellenname anpassen
For lngZeile = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
If Trim$(.Cells(lngZeile, 16).Value)  "" Then
varVal = .Cells(lngZeile, 16).Value
objDic(varVal) = objDic(varVal) + 1
End If
Next lngZeile
lngZeile = 1
.UsedRange.Clear
For Each varVal In objDic
Debug.Print varVal, objDic(varVal)
lngZeile = lngZeile + 1
.Cells(lngZeile, 1).Value = varVal
.Cells(lngZeile, 2).Value = objDic(varVal)
Next varVal
End With
objDic.RemoveAll
Set objDic = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel hängt sich bei Makros auf – Lösungen und Tipps


Schritt-für-Schritt-Anleitung

  1. Überprüfe den VBA-Code: Der erste Schritt ist, den Code zu überprüfen, der das Makro steuert. Achte darauf, dass alle Referenzen korrekt gesetzt sind und keine Fehler enthalten sind. Ein Beispiel für einen funktionsfähigen Code könnte so aussehen:

    Sub Zaehlen() 'Anzahl Vorkommnisse pro Wert in Spalte P zählen
        Dim objDic As Object
        Dim varVal As Variant
        Dim lngZeile As Long
        Set objDic = CreateObject("scripting.dictionary")
        With Worksheets("Grafik")    'Tabellenname anpassen
            For lngZeile = 1 To Cells(Rows.Count, 16).End(xlUp).Row
                If Trim$(.Cells(lngZeile, 16).Value) <> "" Then
                    varVal = .Cells(lngZeile, 16).Value
                    objDic(varVal) = objDic(varVal) + 1
                End If
            Next lngZeile
            lngZeile = 1
            .UsedRange.Clear
            For Each varVal In objDic
                .Cells(lngZeile, 1).Value = varVal
                .Cells(lngZeile, 2).Value = objDic(varVal)
                lngZeile = lngZeile + 1
            Next varVal
        End With
        objDic.RemoveAll
        Set objDic = Nothing
    End Sub
  2. Testen auf verschiedenen Rechnern: Starte das Makro auf mehreren Rechnern, um sicherzustellen, dass das Problem nicht lokal auf einen bestimmten PC beschränkt ist.

  3. Speicher und Ressourcen überprüfen: Stelle sicher, dass genügend RAM und CPU-Ressourcen zur Verfügung stehen. Manchmal kann eine überlastete Excel-Datei dazu führen, dass Excel sich aufhängt.


Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Wenn Du die Fehlermeldung „Unzulässiger oder nicht ausreichend definierter Verweis“ erhältst, überprüfe, ob alle benötigten Bibliotheken in den Verweisen aktiviert sind.

  • Excel hängt sich auf: Wenn Excel sich während der Ausführung des Makros aufhängt, könnte dies an einer fehlerhaften Zuweisung oder an einer Endlosschleife im Code liegen. Achte darauf, dass die Schleifenbedingungen korrekt sind.

  • Verwendung von SpecialCells: Rudi empfahl, Cells.SpecialCells(xlCellTypeLastCell).Row zu vermeiden, da dies ungenau sein kann. Nutze stattdessen Cells(Rows.Count, 16).End(xlUp).Row, um die letzte gefüllte Zeile zu bestimmen.


Alternative Methoden

  1. Verwendung von Arrays: Wenn das Makro mit großen Datenmengen arbeitet, kann die Verwendung von Arrays die Performance steigern, da der Zugriff auf Array-Elemente schneller ist als der Zugriff auf Zellen.

  2. Fehlerbehandlung implementieren: Integriere Fehlerbehandlungsroutinen in Deinen Code, um festzustellen, wo das Problem liegt, falls Excel sich aufhängt. Beispiel:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

Praktische Beispiele

Ein praktisches Beispiel für ein Makro, das die Anzahl der Vorkommen in einer Spalte zählt und in einer Grafik anzeigt:

Sub Zaehlen()
    ' Dein verbesserter VBA-Code hier
End Sub

Verwende diese Struktur, um sicherzustellen, dass die Daten korrekt verarbeitet werden und Excel nicht inaktiv wird.


Tipps für Profis

  • Makros optimieren: Reduziere die Anzahl der Zellzugriffe, um die Ausführungsgeschwindigkeit zu erhöhen. Berechne Werte in einem Array und schreibe sie am Ende zurück auf das Arbeitsblatt.

  • Regelmäßige Backups: Speichere regelmäßig Deine Excel-Dateien, um Datenverlust zu vermeiden, wenn Excel sich aufhängt.

  • Versionskontrolle: Bei umfangreichen Excel-Projekten ist es hilfreich, verschiedene Versionen Deiner Makros zu speichern, um Änderungen rückgängig machen zu können.


FAQ: Häufige Fragen

1. Warum hängt sich mein Excel-Makro auf? Das kann an verschiedenen Faktoren liegen, wie z.B. ungenauen Schleifenbedingungen, unzureichenden Ressourcen oder fehlerhaften Zellreferenzen.

2. Wie kann ich verhindern, dass Excel sich ständig aufhängt? Optimiere Deinen Code, vermeide unnötige Zellzugriffe und implementiere Fehlerbehandlungen, um Probleme frühzeitig zu erkennen.

3. Was kann ich tun, wenn mein Makro nicht die erwarteten Ergebnisse liefert? Überprüfe den Code auf logische Fehler, teste ihn in einer neuen Datei und stelle sicher, dass alle notwendigen Daten vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige