Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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

Makro hängt sich auf :( - Bitte um Hilfe

Makro hängt sich auf :( - Bitte um Hilfe
25.07.2018 21:01:30
Friedrich
Hallo zusammen,
habe mir ein Makro mit verschieden Modulen gebaut. Habe jetzt die einzelnen Module getestet (im Einzelschritt) und alles funktioniert soweit einwandfrei. Möchte ich allerdings das ganze Makro ausführen, hängt sich Excel bzw. das Makro immer auf!
Bin über jeden Hinweis dankbar! :) Vielen Dank im Voraus.
Info: Die ganzen Variablen die "ein Buchstabe" sind, bestimmen nur die Zeilen oder die Tabellen bei denen das Makro jeweils sein soll. Haben keine höhere Relevanz. Die restlichen Variablen sollten durch den Namen etwas aussagekräftiger sein.
Hauptmodul:
Option Explicit
Public tabelle As Worksheet
Public zeile As Long
Public vergleichsdatum As Long
Public t As Integer
Sub neuedatenuebertragen()
'alte Daten aus der Datei löschen - Tabellenblatt löschen
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Sheets("COTdaten").Delete
Application.DisplayAlerts = True
'Daten aus der Quelldatei einfügen - über Makro Aufruf
Call dateneinfuegen
Dim iSpalte, anzahlzeilen, i, x As Integer
'neue Zeilen einfügen, Format übertragen und Zahlenreihe erneuern
With Application
.Calculation = xlManual
.ScreenUpdating = False
t = 2
For Each tabelle In ActiveWorkbook.Sheets
If tabelle.name  "COTdaten" Then
x = 4
Call zeilenanzahl 'ermittelt die Zeile und das Datum
If zeile  0 Then
t = t + 1
While Cells(x, 2).Value 
Nebenmodule:
Option Explicit
Sub dateneinfuegen()
Dim quelldatei, ursprungsdatei As Workbook
Dim nw, qw, zw As Worksheet
Dim strWindowName As String
Dim i As Integer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.ShowWindowsInTaskbar = False
Workbooks.Open ("D:\Marktstrukturdaten\Daten")
strWindowName = ActiveWindow.Caption    'Fenstertitel in Variable einlesen
Windows(strWindowName).Visible = False  'Mappe ausblenden
Set quelldatei = Workbooks("Daten")
Set ursprungsdatei = Workbooks("COT Daten")
Set qw = quelldatei.Worksheets("XLS")   'Festlegung der Quelldatei
Set nw = ursprungsdatei.Sheets.Add(Before:=Worksheets(1))   'Erstellung neues Tabellenblatts
nw.name = "COTdaten"
Set zw = ursprungsdatei.Sheets("COTdaten")  'Ziel zum kopieren
qw.Cells.Copy zw.Cells(1, 1)
Columns("B:B").Delete
Columns("C:C").Delete
Columns("D:D").Delete
Columns("C:C").Clear
Columns("D:D").Clear
For i = 1 To 7
Columns("F:F").Insert Shift:=xlToRight
Next i
Columns("O:O").Insert Shift:=xlToLeft
Columns("R:R").Clear
Columns("U:U").Clear
Columns("X:X").Clear
Columns("Y:Y").Delete
Columns("Y:Y").Delete
Columns("AA:GM").Clear
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.ShowWindowsInTaskbar = True
Windows(strWindowName).Close SaveChanges:=False
End Sub
2. Nebenmodul:
Option Explicit
Sub zeilenanzahl()
Dim suchbereich As Range
Dim suchbegriff As String
suchbegriff = Sheets(t).Cells(10, 1)
On Error Resume Next
Set suchbereich = Sheets("COTdaten").Range("A:A")
zeile = suchbereich.Find(What:=suchbegriff, MatchCase:=False, LookAt:=xlWhole).Row
If suchbereich Is Nothing Then 'Falls die Suche nichts findet = Abbruch
Exit Sub
End If
vergleichsdatum = Sheets("COTdaten").Cells(zeile, 2).Value
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Makro hängt sich auf :( - Bitte um Hilfe
25.07.2018 23:16:05
Daniel
Hi
ist jetzt schwer und etwas aufwendig, deinen Code ohne Beispieldatei zum testen nur theoretisch durchzuwühlen.
Ich hab mir einfach nur mal den Teil angeschaut, mit dem du die Zeilennummer ermittelst, schon da liegt einiges im argen.
Beispielsweise werden, wenn der Suchbegriff nicht gefunden wird, die Variablen "Zeile" und "Vergleichsdatum" nicht auf 0 gesetzte, dh dein Hauptmakro arbeitet dann fröhlich mit den alten Daten der letzten erfolgreichen Suche.
Diese Makro zeigt, dass es wirklich noch am Grundverständnis fehlt und einfach nur irgendwas aus dem Internet zusammenkopiert wurde, ohne selber mitzudenken.
Kleins Beispiel:
Set suchbereich = Sheets("COTdaten").Range("A:A")
If suchbereich Is Nothing Then 'Falls die Suche nichts findet = Abbruch

suchbereich ist nicht das Ergebnis der Suche, sondern den Bereich, den du durchsucht, und der sollte eigentlich immer vorhanden sein, oder?
so müsste das Makro ZeilenZahl eigentlich aussehen:
Sub zeilenanzahl()
Dim suchbereich As Range
Dim FundStelle as Range
Dim suchbegriff As String
suchbegriff = Sheets(t).Cells(10, 1)
Set suchbereich = Sheets("COTdaten").Range("A:A")
Set Fundstelle = suchbereich.Find(What:=suchbegriff, MatchCase:=False, LookAt:=xlWhole)
If Fundstelle Is Nothing Then 'Falls die Suche nichts findet = Abbruch
Zeile = 0
Vergleichsdatum = 0
Else
zeile = Fundstelle.Row
vergleichsdatum = Sheets("COTdaten").Cells(zeile, 2).Value
end if
End Sub

Anzeige
AW: Makro hängt sich auf :( - Bitte um Hilfe
25.07.2018 23:29:41
Mullit
Hallo,
tja was soll man da sagen, ich fürchte das wird keiner nachbauen, da müsstest Du schon ne Bsp.-Mappe hochladen, damit sich das einer anschaut, Option Explicit ist ja schon mal gut gesetzt, aber hier noch ein Rookie-Fehler:
Dim iSpalte As Long, anzahlzeilen As Long, i As Long, x As Long

In VBA müssen alle Variablen explizit deklariert werden, anderfalls sind sie vom (allg.) Typ Variant und Fehler werden eher überdeckt, gleiches auch bei den Objekten, wird aber wohl nicht ursächlich für die Probleme sein...
Dim quelldatei As Workbook, ursprungsdatei As Workbook
Dim nw As Worksheet, qw As Worksheet, zw As Worksheet

Nimm übrigens immer besser sprechende Namen, für die Vars, nicht diese verkümmerten Einzelbuchst.-Hieroglyphen...;-)
Gruß, Mullit
Anzeige
AW: Makro hängt sich auf :( - Bitte um Hilfe
25.07.2018 23:34:28
Mullit
Hallo Daniel,
...uups hat nich aktualisiert, hast ja schon den Finger in der Wunde..;-)...kann auch nix mehr schief gehen...
Gruß, Mullit
AW: Makro hängt sich auf :( - Bitte um Hilfe
29.07.2018 19:41:11
Sandra
Hallo Friedrich
Ich habe mir zwar jetzt nicht im Datail Ihren Code angesehen, jedoch sollten Sie anstatt der While wend Schleife eine Do-Schleife nehmen, weil die While wend Schleife sich überhaupt nicht unterbrechen lässt. Ich habe aus eigener Erfahrung bereits festgestellt, dass sich ein Makto bei Fehlern in Do-Schleifen aufhängt. Daher gehe ich ebenfalls davon aus, dass Ihr Fehler sehr wahrscheinlich ebenfalls in diesem Bereich liegen wird (while-Schleifen verhalten sich genauso).
Außerdem sollten Sie eine Schleife beim einfügen und/oder entfernen von Zeilen/Spalten immer rückwärts laufen lassen.
Im Sub dateneinfuegen macht das leeren der Spalten mit darauffolgender Löschung derselbigen Spalten keinen Sinn. Hier genügt es vollkommen, wenn Sie die Spalten sofort löschen. Des Weiteren ist die Löschung derselben Spalte nicht wirklich sinnvoll, da man hier wie in Ihrem Fall die Spalte Z ebenfalls löscht.
Viele Grüße
Sandra
Anzeige

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige