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

Beiträge aus den Excel-Beispielen zum Thema "Was macht der VB-Editor im Hintergrund ??"