Herbers Excel-Forum - das Archiv

Was macht der VB-Editor im Hintergrund ??

Bild

Betrifft: Was macht der VB-Editor im Hintergrund ??
von: Paralizer

Geschrieben am: 20.04.2005 10:35:23
Hallo ihr Programmierprofis,
ich habe ein Problem mit einem Makro:
Ich weiss, dass das Makro läuft, aber beim 1. Ausführens stürzt mir Excel ab und will einen Fehlerbericht senden. Wenn ich dann aber beim erneuten Starten VOR dem Ausführen des Makros in den VB-Editor gehe, nichts am Makro verändere und den Editor wieder schließe, funktioniert das Makro. Ohne das Excel abstürzt.
Habt ihr eine Idee, warum Excel abstürzt oder soll ich auch mal das Makro posten ?
Vielen Dank !!!!!

Leif Erichsen
Bild

Betrifft: wäre hilfreich...
von: Volker
Geschrieben am: 20.04.2005 17:02:52
Hallo Leif,
ich hatte mal einen ähnlichen Effekt bei einem Code, der VBA Code in einer anderen Mappe erzeugt. Vielleicht ist es bei Dir ähnlich.
Gruß
Volker
Bild

Betrifft: AW: wäre hilfreich...
von: andre
Geschrieben am: 20.04.2005 19:45:00
Hallo Leif,
ich hab's auch wie Volker gemacht, anders hast Du fast keine Chance wenn einmal der Wurm drin ist. Ein Hinweis noch: Projekte von Excel aus speichern und nicht aus dem VBE.
Grüße, ANdre
Bild

Betrifft: AW: wäre hilfreich...
von: Paralizer

Geschrieben am: 21.04.2005 10:44:38
Hier der Code, der mir Kopfzerbrechen macht:
Public
Sub csv()
'Dim text1 As String
'Dim text2 As String
'Dim text3 As String
'Dim Antwort1 As String
'Dim Antwort2 As String
Dim pname As String, clearname As String, svname As String, dlname As String
Dim namea As String, nameb As String, akt As Integer, pbrake As String
'Dim ziel As String
Dim X, Y, z As Integer
'Dim matnr As String
'fuer Filtern von Leerzeichen und Strichen in Artikelnummern:
Dim a, b As Integer
Dim austext, eintext, aus2 As String
pname = ActiveWorkbook.ActiveSheet.Name
Debug.Print clearname, svname
Dim i As Integer
Dim aktsheet As String
Dim strFilter As String, strSaveFilename As String, xname As String
Dim tag As String
namea = ActiveWorkbook.Name
Workbooks.Add
nameb = ActiveWorkbook.Name
Worksheets.Add
ActiveSheet.Name = "Stückliste"
If pname = "Cube Line" Then
xname = "'Cube Line'"
Else
xname = pname
End If
Debug.Print xname
Workbooks(namea).Activate
Debug.Print "test"; pname
Select Case pname
Case "Klemmleiste"
'1.Zeile i.d. STL
'Workbooks(nameb).Worksheets("Stückliste").Cells(1, 1) = "Mat.-Nr."
'Workbooks(nameb).Worksheets("Stückliste").Cells(1, 2) = "Pos.-Nr."
Workbooks(nameb).Worksheets("Stückliste").Cells(1, 1) = "Pos.-Typ"
Workbooks(nameb).Worksheets("Stückliste").Cells(1, 2) = "Komponente"
Workbooks(nameb).Worksheets("Stückliste").Cells(1, 3) = "Menge"
Workbooks(nameb).Worksheets("Stückliste").Cells(1, 4) = "Bezeichung"
Y = 3 '<--Zeilenzähler
'Materialnummer extrahieren
'matnr = ""
'eintext = Cells(66, 11) 'Position Materialnummer auf dem Formblatt
'For b = 1 To Len(eintext)
' austext = Mid(eintext, b, 1)
'If austext = "0" Then austext = "0"
'If austext = " " Then austext = ""
'If austext = "-" Then austext = ""
'matnr = matnr + austext
'Next 'b
'Matnr. := R415xxxxxx
'matnr = "R415" + Mid(matnr, 5, 6)
'Tabelle fuellen
For X = 12 To 88 'Anzahl der Zeilen i.d. STL - Bereich untereinander in der die INfos gespiegelt wurden
If Not Cells(X, 69) = "0" Then '69
'Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 1) = matnr
'Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 2) = (Y - 1) * 10
Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 1) = "L"
Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 3) = Cells(X, 75) 'mengenangabe
Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 4) = Cells(X, 67)
'Filtern von Leerzeichen und Strichen von manuellen Eingaben
aus2 = ""
eintext = Cells(X, 74) 'eintext=Artikelnummern
For b = 1 To Len(eintext)
austext = Mid(eintext, b, 1)
' If austext = "0" Then austext = "0"
If austext = " " Then austext = ""
If austext = "-" Then austext = ""
aus2 = aus2 + austext
Next 'b
'Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 4).NumberFormat = "@"
Workbooks(nameb).Worksheets("Stückliste").Cells(Y, 2).Value = aus2
Y = Y + 1
End If
Next X 'zeilenzähler 1 hoch
End Select
Workbooks(nameb).Activate
'Range("B2:B80").Select
'With Selection
'  .HorizontalAlignment = xlRight
'  .VerticalAlignment = xlBottom
'  .WrapText = False
'  .Orientation = 0
'  .AddIndent = False
'  .IndentLevel = 0
'  .ShrinkToFit = False
'  .ReadingOrder = xlContext
'  .MergeCells = False
'End With
Range("a1").Select
'ActiveSheet.Cells.Locked = True
'ActiveSheet.Protect "MRP"
ActiveWorkbook.Close
'End If
' End If
End Sub


Ich hatte es auch direkt in Excel gespeichert, nur leider ohne Erfolg :-(

Gruß
Leif
Bild

Betrifft: keine Lösung, aber
von: Volker

Geschrieben am: 21.04.2005 11:44:24
Hallo Leif,
ich hab Deinen Code mal in eine neue Mappe eingefügt und ausgeführt.
Soweit kein Problem.
Leider bin ich mir nicht sicher, ob ich erst die Mappe und dann Excel geschlossen gehabe, oder sofort Excel geschlossen hab.
Jedenfalls hab ich, nachdem die Anwendung zu war, auch einen Fehlerbericht bekommen.
Konnte den Effekt bis jetzt nicht reproduzieren.
Eventuell liegt es an den Debuggerbefehlen "Debug.Print". Kommentier die doch mal aus.
Wenn Du zur Laufzeit Variable ansehen willst, kannst Du das auch im Überwachungsfenster machen. Hat den Vorteil, dass Du eine Änderung auch ohne extra Befehl mitkriegst.
Du siehst einen Variablenwert aber auch, wenn Du mit den Cursor an die Stelle im Code bewegst.
Das bringt Dich alles wahrscheinlich nicht wirklich weiter, aber vielleicht schaltet sich ja noch ein Profi ein.
Gruß
Volker
 Bild
Excel-Beispiele zum Thema "Was macht der VB-Editor im Hintergrund ??"
Zugriff auf VB-Editor verhindern, solange Arbeitsmappe geöffnet Hintergrundfarbe nach Datum festlegen
Feste Hintergrundfarbe der aktiven Zelle bei Cursorbewegungen Zeilen mit Zellen mit rotem Hintergrund ausblenden
Hintergrundfarbe nach Eingabewert Anzahl von Zellen mit einer bestimmten Hintergrundfarbe ermitteln
Werte in Zellen mit vorgegebener Hintergrundfarbe addieren Über bedingte Formatierung Hintergrundfarbe bei Zelleingabe ändern
Zellen mit Hintergrundfarbe in neuer Arbeitsmappe auflisten Jede zweite Zeile mit Hintergrundfarbe belegen