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

Excel_Makro_wieso overflow

Excel_Makro_wieso overflow
09.12.2015 13:31:04
flo
' Zellenformatierung
zeindex = 1
Do
If Worksheets("abgrenzung").Cells(zeindex, 1) = "102" Or Worksheets("abgrenzung").Cells(zeindex, 1) = "101" Then
With Worksheets("abgrenzung").Cells(zeindex, 2)
datum = .Value
End With
End If
For spindex = 1 To 18
With Worksheets("abgrenzung").Cells(zeindex, spindex)
wert = .Value
If wert = "0" Or wert = "00.00.0000" Then .Value = Null 'ersetzen
End With
Next spindex
wert = Left(Worksheets("abgrenzung").Cells(zeindex, 3), 3)
If wert = "***" Then
Worksheets("abgrenzung").Rows(zeindex).Select
Selection.Font.Bold = True 'Zeile auf Fett stellen
Worksheets("abgrenzung").Rows(zeindex + 1).Select
Selection.Insert Shift:=xlDown 'Zeile einfügen
Selection.RowHeight = 9 'Zeilenhöhe auf 9 Punkt einstellen
End If
With Worksheets("abgrenzung").Cells(zeindex, 3)
wert = .Value
End With
zeindex = zeindex + 1
Loop While wert "********"
Wieso kommt es hier zu einen Overflow?
Wenn ich statt integer, double initialisiere bekomme stürzt das Programm auch ab?
Bitte um Hilfe =)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel_Makro_wieso overflow
09.12.2015 13:49:06
Daniel
Hi
schwierig so zu sagen.
was für einen OverFlow hast du denn und was genau ist das für ein Makro, dh ist es ein normales Makro in einen allgemeinen Modul oder ist es ein Eventmakro (Change, SelectionChange-Event)?
Eventmakros können sich selber aufrufen und wenn man da nicht sauber programmiert, landet man in einer Endlosschleife von sich selbst aufrufenden Makros, welche solange läuft, bis der Zwischenspeicher für die Variablen voll ist, was dann sein eine Stack-Overflow ergibt.
Gruß Daniel

AW: Excel_Makro_wieso overflow
09.12.2015 15:24:48
flo
Also es geht darum, dass das Makro eine ausgelesene unformatierte Textdatei schön formatieren soll.
Die Textdatei wird von SAP ausgespült.
Das Programm in SAP welches die Daten ausspült wurde vor kurzem auf UNICODE angepasst und seitdem kann das Excelmakro die erhaltene .txt datei nicht mehr richtig weiterverarbeiten und es stürzt ab.
Es kommt zu einem Laufzeitfehler 6, Überlauf.
Hier der komplette Code:
Sub Abgrenzung()
' Datei importieren
Workbooks.OpenText FileName:="C:\SAPWorkdir\abgrenzung.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1)
Dim zeindex As Integer                     ' Zeilenzähler
Dim spindex As Integer                   ' Spaltenzähler
Dim wert As String
Dim datum As String
' Zellenformatierung
zeindex = 1
Do
If Worksheets("abgrenzung").Cells(zeindex, 1) = "102" Or Worksheets("abgrenzung").Cells(zeindex, _
1) = "101" Then
With Worksheets("abgrenzung").Cells(zeindex, 2)
datum = .Value
End With
End If
For spindex = 1 To 18
With Worksheets("abgrenzung").Cells(zeindex, spindex)
wert = .Value
If wert = "0" Or wert = "00.00.0000" Then .Value = Null         'ersetzen
End With
Next spindex
wert = Left(Worksheets("abgrenzung").Cells(zeindex, 3), 3)
If wert = "***" Then
Worksheets("abgrenzung").Rows(zeindex).Select
Selection.Font.Bold = True                                          'Zeile auf Fett stellen
Worksheets("abgrenzung").Rows(zeindex + 1).Select
Selection.Insert Shift:=xlDown                                      'Zeile einfügen
Selection.RowHeight = 9                                             'Zeilenhöhe auf 9 Punkt  _
einstellen
End If
With Worksheets("abgrenzung").Cells(zeindex, 3)
wert = .Value
End With
zeindex = zeindex + 1
Loop While wert  "********"
' Spaltenbreite def.
For spindex = 1 To 5
Worksheets("abgrenzung").Columns(spindex).Select
If spindex = 1 Then Selection.ColumnWidth = 5
If spindex = 2 Then Selection.ColumnWidth = 8.5
If spindex = 3 Then Selection.ColumnWidth = 7
If spindex = 4 Then Selection.ColumnWidth = 38
If spindex = 5 Then Selection.ColumnWidth = 15
Next spindex
' Zeile für Überschrift einfügen
Worksheets("abgrenzung").Rows(1).Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
'Selection.Insert Shift:=xlDown
' Überschriften Def.
Worksheets("abgrenzung").Cells(1, 1).Select
ActiveCell.FormulaR1C1 = "M. Kaindl Holzindustrie G&V per  " & datum
Worksheets("abgrenzung").Cells(3, 1).Select
ActiveCell.FormulaR1C1 = "BUK"
Worksheets("abgrenzung").Cells(3, 2).Select
ActiveCell.FormulaR1C1 = "DATUM"
Worksheets("abgrenzung").Cells(3, 3).Select
ActiveCell.FormulaR1C1 = "KOA"
Worksheets("abgrenzung").Cells(3, 4).Select
ActiveCell.FormulaR1C1 = "BEZEICHNUNG"
Worksheets("abgrenzung").Cells(3, 5).Select
ActiveCell.FormulaR1C1 = "KST/KTR"
Worksheets("abgrenzung").Cells(3, 8).Select
ActiveCell.FormulaR1C1 = "PRA"
Worksheets("abgrenzung").Cells(3, 12).Select
ActiveCell.FormulaR1C1 = "SALDO"
Worksheets("abgrenzung").Cells(3, 14).Select
ActiveCell.FormulaR1C1 = "PLAN"
Worksheets("abgrenzung").Cells(3, 16).Select
ActiveCell.FormulaR1C1 = "Abw.zum"
Worksheets("abgrenzung").Cells(3, 17).Select
ActiveCell.FormulaR1C1 = "Abgrenzung"
Worksheets("abgrenzung").Cells(3, 18).Select
ActiveCell.FormulaR1C1 = "Abgrenzung"
Worksheets("abgrenzung").Cells(3, 19).Select
ActiveCell.FormulaR1C1 = "Saldo"
Worksheets("abgrenzung").Cells(3, 20).Select
ActiveCell.FormulaR1C1 = "Saldo"
Worksheets("abgrenzung").Cells(4, 8).Select
ActiveCell.FormulaR1C1 = "Vormonat"
Worksheets("abgrenzung").Cells(4, 12).Select
ActiveCell.FormulaR1C1 = "lt.Konto"
Worksheets("abgrenzung").Cells(4, 16).Select
ActiveCell.FormulaR1C1 = "PLAN"
Worksheets("abgrenzung").Cells(4, 17).Select
ActiveCell.FormulaR1C1 = "Menge"
Worksheets("abgrenzung").Cells(4, 18).Select
ActiveCell.FormulaR1C1 = "Wert"
Worksheets("abgrenzung").Cells(4, 19).Select
ActiveCell.FormulaR1C1 = "Ink.PRA"
Worksheets("abgrenzung").Cells(4, 20).Select
ActiveCell.FormulaR1C1 = "ink.PRA"
' Überschrift formatieren
Worksheets("abgrenzung").Rows("1:5").Select
Selection.Font.Bold = True
Worksheets("abgrenzung").Rows("1:1").Select
With Selection.Font
.Name = "Arial"
.Size = 20
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.ColorIndex = xlAutomatic
End With
' Spalten ausblenden
Worksheets("abgrenzung").Columns(6).Hidden = True   ' Spalte F
Worksheets("abgrenzung").Columns(7).Hidden = True   ' Spalte G
Worksheets("abgrenzung").Columns(9).Hidden = True   ' Spalte I
Worksheets("abgrenzung").Columns(10).Hidden = True  ' Spalte J
Worksheets("abgrenzung").Columns(11).Hidden = True  ' Spalte K
Worksheets("abgrenzung").Columns(13).Hidden = True  ' Spalte M
Worksheets("abgrenzung").Columns(15).Hidden = True  ' Spalte O
Worksheets("abgrenzung").Columns(17).Hidden = True  ' Spalte Q
Worksheets("abgrenzung").Columns(19).Hidden = True  ' Spalte S
Worksheets("abgrenzung").Columns(20).Hidden = True  ' Spalte T
For spindex = 7 To 18
Worksheets("abgrenzung").Columns(spindex).Select
Selection.NumberFormat = "#,##0"
Next spindex
Worksheets("abgrenzung").Cells(1, 1).Select
Seite
End Sub
Sub Vorbereitung_SAP()
' Vorbereitung für übernahme ins SAP
' Makro am 26.05.99 von Werner Fröhlich aufgezeichnet
Worksheets("abgrenzung").Rows("1:6").Select
Selection.Delete Shift:=xlUp
Worksheets("abgrenzung").Columns(2).Select
Selection.NumberFormat = "yyyymmdd"
ChDir "C:\SAPWorkdir"
ActiveWorkbook.SaveAs FileName:="C:\SAPWorkdir\abgrenzung.txt", FileFormat _
:=xlText, CreateBackup:=False
End Sub

Anzeige
AW: Excel_Makro_wieso overflow
09.12.2015 17:40:16
flo
update:
Es kommt jetzt zum Fehler: Anwendungs- oder objektdefinierter Fehler
kein overflow mehr gg
Kann mir bitte wer helfen?

AW: Excel_Makro_wieso overflow
09.12.2015 17:42:32
Daniel
Hi
und was hast du geändert?
in welcher Zeile tritt der Fehler auf?
wenn du Hilfe haben willst, solltest du informativer sein und alle Infos weitergeben, die dir das System beim Fehlerabbruch gibt.
Gruß Daniel

AW: Excel_Makro_wieso overflow
11.12.2015 09:58:43
flo
If Worksheets("abgrenzung").Cells(zeindex, 1) = "102" Or Worksheets("abgrenzung").Cells(zeindex, 1) = "101" Then
in dieser Zeile kommt es zum Anwendungs- oder objektdefinierten Fehler.
in der Zeile zeindex = zeindex + 1 war der zeindex bei 32767 und habe dann zeindex = zeindex -1 gemacht, wollte hald schauen ob es wirklich ein overflow ist.
und jetzt bekomme ich eben den objektdefinierten Fehler.
PS: die .txt datei welche aus SAP ausgespült wird, ging vor der UNICODE umstellung einwandfrei.

Anzeige
AW: Excel_Makro_wieso overflow
11.12.2015 10:44:58
Daniel
Hi
wenn du mit Zeilennunmmern arbeitest, solltest du diese Variablen immer als LONG deklarieren, INTERGER hat nur einen Wertebreich +/-2^15, Long hingegen +/-2^31
die maximale Anzahl der Zeilen in Excel ist jedoch 2^20 (ab Excel 2007) bzw 2^16 (bis Excel 2003)
da du hier Texte vergleichst solltest du auch so schreiben:
If Worksheets("abgrenzung").Cells(zeindex, 1).Text = "102" Or Worksheets("abgrenzung").Cells(zeindex, 1).Text = "101" Then
ansonsten könnte es zu Problemen kommen, wenn in der Zelle ein Fehlerwert steht, bzw für Excel ist die Zahl 102 nicht das gleiche wie der Text mit der Ziffernfolge "102"
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige