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

VBA Fehlermeldung

VBA Fehlermeldung
29.10.2018 09:11:31
Cord
Hallo und guten Morgen
Ich habe hier einen VBA Code, den ich nicht selbst geschrieben habe der mir hier einen Fehler meldet, den ich nicht nachvollziehen kann weil er nicht bei jedem Ordner auftritt. In der Zeile
  • If (i = itsCwTypeDataXML) And (Not currXMLData.DocInfo.IsSameLessonAs(DocInfo)) Then

  • meldet er Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt.
    Soweit ich das sehe ist aber i da.
    Wäre super wenn da mal jemand rüberschauen könnte und mich draufstoßen könnte was da falsch ist.
  • 
    Private Sub CheckFiles(line As Long, fdr As Folder, level As Integer)
    Dim xmlph As String, i As itsCwType, needsToBeChecked As Boolean, lsninf As cLessonInfo
    Dim hasFile(16) As File, isAllowed(16) As Boolean, isRequired(16) As Boolean, needsCheck(16) _
    _
    As Boolean
    For i = 1 To 16
    Set hasFile(i) = Nothing
    isAllowed(i) = False
    isRequired(i) = False
    needsCheck(i) = False
    Next i
    isAllowed(itsCwTypeThumbsDb) = True
    isAllowed(itsCwTypeToDo) = True
    isAllowed(itsCwTypeRedaktion) = True
    isRequired(itsCwTypeDataXML) = True
    Select Case level
    Case itsCwLevelCourse ' course
    isRequired(itsCwTypeCatalog) = True
    needsCheck(itsCwTypeCatalog) = True
    isAllowed(itsCwTypeListe) = True
    Case itsCwLevelSubject ' subject
    Case itsCwLevelTopic ' topic
    Case itsCwLevelLesson ' lesson
    isRequired(itsCwTypeManual) = True
    needsCheck(itsCwTypeManual) = True
    isRequired(itsCwTypePowerPoint) = True
    needsCheck(itsCwTypePowerPoint) = True
    isRequired(itsCwTypeLessonSummary) = True
    needsCheck(itsCwTypeLessonSummary) = True
    isAllowed(itsCwTypeTestQuestions) = True
    needsCheck(itsCwTypeTestQuestions) = True
    isAllowed(itsCwTypeTestSolution) = True
    needsCheck(itsCwTypeTestSolution) = True
    isAllowed(itsCwTypeWorksheetTask) = True
    needsCheck(itsCwTypeWorksheetTask) = True
    isAllowed(itsCwTypeWorksheetSolution) = True
    needsCheck(itsCwTypeWorksheetSolution) = True
    isAllowed(itsCwTypeBildliste) = True
    needsCheck(itsCwTypeBildliste) = False 'Bildliste prüfen  _
    ausgeschaltet
    End Select
    For i = 1 To 16
    If isRequired(i) = True Then
    isAllowed(i) = True
    End If
    Next i
    Dim currXMLData As cXMLData
    xmlph = FindXMLFile(fdr)
    If xmlph  "" Then
    Select Case level
    Case itsCwLevelCourse
    pCrsXMLData.OpenFile xmlph
    Set currXMLData = pCrsXMLData
    Case itsCwLevelSubject
    pSbjXMLData.OpenFile xmlph
    Set currXMLData = pSbjXMLData
    Case itsCwLevelTopic
    pTpcXMLData.OpenFile xmlph
    Set currXMLData = pTpcXMLData
    Case itsCwLevelLesson
    pLsnXMLData.OpenFile xmlph
    Set currXMLData = pLsnXMLData
    Case Else
    Set currXMLData = Nothing
    End Select
    End If
    Set lsninf = New cLessonInfo
    lsninf.FromString fdr.Name
    DocInfo.SuNr = lsninf.SuNr
    DocInfo.ToNr = lsninf.ToNr
    DocInfo.LeNr = lsninf.LeNr
    Dim docs As files, sdoc As File
    Dim dinf As cDocumentInfo, pgs As Long
    Dim finf As cFileinfo, ninfos As Long, nproblems As Long
    Dim pgsval As Variant, pgsfrm As Variant, colnr As Integer
    Set dinf = New cDocumentInfo
    Set docs = fdr.files
    For Each sdoc In docs
    dinf.FromFileName sdoc.Name
    If dinf.IsOwnerFile = False And dinf.TypeEnum  itsCwTypeThumbsDb Then
    'Debug.Print "File: " & sdoc.Name
    If isAllowed(dinf.TypeEnum) = True Then
    If Not hasFile(dinf.TypeEnum) Is Nothing Then
    AddError sdoc.path, "Mehrere Dateien vom gleichen Typ", False,  _
    errorColorOrange
    Else
    Set hasFile(dinf.TypeEnum) = sdoc
    End If
    Else
    AddError sdoc.path, "Unzulässige Datei", False, errorColorOrange
    End If
    End If
    Next sdoc
    For i = 1 To 16
    needsToBeChecked = False
    If isRequired(i) = True And hasFile(i) Is Nothing Then
    AddError fdr.path, "Fehlende Datei " & dinf.GetTypeName(i), False, errorColorOrange
    End If
    If Not hasFile(i) Is Nothing Then
    pgs = 0
    If Not currXMLData Is Nothing Then
    If (i = itsCwTypeDataXML) And (Not currXMLData.DocInfo.IsSameLessonAs(DocInfo))  _
    _
    Then
    Dim ddi As cDocumentInfo
    Set ddi = currXMLData.DocInfo
    'Debug.Print "old: " & ddi.ToFileName & "  new: " & DocInfo.ToFileName
    ddi.CopyFrom DocInfo
    Set currXMLData.DocInfo = ddi
    currXMLData.SaveFile
    End If
    Set finf = currXMLData.GetFileInfoByType(dinf.GetTypeString(i))
    If finf Is Nothing Then
    ninfos = 0
    nproblems = 0
    pgs = 1
    If needsCheck(i) = True Then
    AddError hasFile(i).path, dinf.GetTypeName(i) & "wurde nicht geprüft",   _
    _
    True, errorColorOrange
    needsToBeChecked = True
    End If
    Else
    ninfos = currXMLData.GetFileInfosByType(dinf.GetTypeString(i))
    nproblems = currXMLData.GetFileProblemsByType(dinf.GetTypeString(i))
    Dim fidate As Date, xmdate As Date, chdate As Date, forcerev As String
    fidate = hasFile(i).DateLastModified
    xmdate = finf.Changed
    chdate = finf.Checked
    If i  itsCwTypePowerPoint Then
    forcerev = currXMLData.ForceRevdate
    Else
    forcerev = ""
    End If
    If (ninfos > 0) Or (nproblems > 0) Or (fidate > chdate) Or (forcerev  "")  _
    _
    Or (pCatalogWasChanged = True) Then
    Dim errstr As String, col As ErrorColor
    errstr = ""
    col = errorColorOrange
    If (ninfos > 0) Or (nproblems > 0) Then
    errstr = "hat beim Prüfen"
    If (nproblems = 1) Then
    errstr = errstr & " ein Problem"
    End If
    If (nproblems > 1) Then
    errstr = errstr & " " & nproblems & " Probleme"
    End If
    If (ninfos > 0) And (nproblems > 0) Then
    errstr = errstr & " und"
    End If
    If (ninfos = 1) Then
    errstr = errstr & " einen Hinweis"
    End If
    If (ninfos > 1) Then
    errstr = errstr & " " & ninfos & " Hinweise"
    End If
    errstr = errstr & " ergeben"
    If (ninfos > 0) Then col = errorColorGreen
    If (nproblems > 0) Then col = errorColorRed
    End If
    If (fidate > chdate) Then
    If errstr  "" Then
    errstr = errstr & " und "
    End If
    errstr = errstr & "wurde nach dem Prüfen verändert (" &  _
    FormatTimeSpan(fidate, chdate) & ")"
    End If
    If (forcerev  "") Then
    If errstr  "" Then
    errstr = errstr & " und "
    End If
    errstr = errstr & "das Revisionsdatum muss geändert werden (" &  _
    forcerev & ")"
    End If
    If (pCatalogWasChanged = True) Then
    If errstr  "" Then
    errstr = errstr & " und "
    End If
    errstr = errstr & "der Katalog wurde verändert"
    End If
    AddError hasFile(i).path, errstr, True, col
    needsToBeChecked = True
    End If
    If needsCheck(i) = True Then
    pgs = finf.Pages
    Else
    pgs = 1
    End If
    End If
    Else
    If needsCheck(i) = True Then
    AddError hasFile(i).path, dinf.GetTypeName(i) & "wurde noch nicht geprüft",  _
    _
    True, errorColorOrange
    pgs = 0
    needsToBeChecked = True
    End If
    If i = itsCwTypeToDo Then
    pgs = 1
    End If
    End If
    If pgs  0 And i  itsCwTypeDataXML And i  itsCwTypeCatalog And i   _
    itsCwTypeListe Then
    colnr = dinf.GetColumnNumber(i)
    pgsval = Application.Sheets(syllabus).Cells(line, colnr).Value
    pgsfrm = Application.Sheets(syllabus).Cells(line, colnr).Formula
    If pgsval = 0 And pgsfrm = "" Then
    Application.Sheets(syllabus).Cells(line, colnr).Value = pgs
    Application.Sheets(syllabus).Hyperlinks.Add Anchor:=Application.Sheets( _
    syllabus).Cells(line, colnr), _
    Address:="file:///" & hasFile(i) _
    _
    .path, _
    ScreenTip:=hasFile(i).Name, _
    TextToDisplay:="" & pgs
    Application.Sheets(syllabus).Cells(line, colnr).Font.Underline =  _
    xlUnderlineStyleNone
    Application.Sheets(syllabus).Cells(line, colnr).Font.Color = RGB(0, 51,  _
    153)
    Else
    If Left$(pgsfrm, 1)  "=" Then
    AddHighlight line, colnr, True, RGB(255, 0, 0), RGB(255, 255, 127)
    Application.Sheets(syllabus).Cells(line, colnr).Value = pgs
    Else
    AddHighlight line, colnr, True, RGB(127, 0, 0), RGB(255, 200, 0)
    Application.Sheets(syllabus).Cells(line, colnr).Value = pgs + pgsval
    Application.Sheets(syllabus).Cells(line, colnr).Formula = pgsfrm & "+" & _
    _
    pgs
    End If
    End If
    If needsToBeChecked = True Then
    With Application.Sheets(syllabus).Cells(line, colnr).Interior
    .PatternColorIndex = xlAutomatic
    .Color = RGB(255, 192, 192)
    .TintAndShade = 0
    End With
    End If
    End If
    If (i = itsCwTypeCatalog) And (needsToBeChecked = True) Then
    pCatalogWasChanged = True
    End If
    End If
    Next i
    If level = itsCwLevelLesson And Not currXMLData Is Nothing Then
    Application.Sheets(syllabus).Cells(line, 4).Value = currXMLData.PeriodsTheory
    Application.Sheets(syllabus).Cells(line, 5).Value = currXMLData.PeriodsPractice
    If currXMLData.GetTasksCount > 0 Then
    Application.Sheets(syllabus).Cells(line, 13).Value = currXMLData.GetTasksCount
    Else
    Application.Sheets(syllabus).Cells(line, 13).Value = ""
    End If
    Application.Sheets(syllabus).Cells(line, 14).Value = currXMLData.Questions
    Application.Sheets(syllabus).Cells(line, 19).Value = GetRevDate(currXMLData.Revdate)
    End If
    Dim fdrs As folders, sfdr As Folder
    Set fdrs = fdr.subfolders
    For Each sfdr In fdrs
    Next sfdr
    End Sub
    

  • Danke für eure Mühe
    Cord

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA Fehlermeldung
    29.10.2018 11:21:59
    ChrisL
    Hi Cord
    Kurz mit Formel gezählt, es gibt...
    73 "If"
    35 "End If"
    minus 2 If's, welche kein End-If erfordern:
    If (ninfos > 0) Then col = errorColorGreen
    If (nproblems > 0) Then col = errorColorRed
    mach 71 zu 35 d.h. es fehlt ein End-If
    cu
    Chris
    AW: VBA Fehlermeldung
    29.10.2018 17:00:05
    mmat
    Hallo,
    ein fehlendes "end if" erzeugt keinen Error 91. "If" muß etwa doppelt so oft vorkommen wie "end if" (abzüglich der Einzeiler...) da es Bestandteil von "End If" ist. ;-)
    I ist eine numerische Variable, und daher wird's auch hier keinen Error 91 geben.
    Also bleibt nur noch der Term currXMLData.DocInfo.IsSameLessonAs(DocInfo) übrig. Ich würde mal prüfen, ob die korrekte Initialisierung desselben in jedem Fall klappt.
    vg, MM
    Anzeige
    AW: VBA Fehlermeldung
    01.11.2018 07:42:55
    Cord
    Wie gesagt habe ich den nicht selbst geschrieben und bin auch nicht der VBA Crack.
    was macht der Term ?
    Wenn ich das richtig rauslese ist das um eine kleine Datei zu erzeugen in der diverse Formatierungen stehen.
    
    C:\ITS\CoursewarePrüfung\IMT\1 MathematicsMathematicsMathematics
    

    Im Debugger wird mir angezeigt für (i = itsCwTypeDataXML) = 13 was für mich heisst der erste Teil funktioniert. Im zweiten Teil wird nix angezeigt.
    Wie kann ich weiter vorgehen, um den Fehler einzukreisen ?
    Cord
    Anzeige
    AW: VBA Fehlermeldung
    01.11.2018 07:46:15
    Cord
    Hat leider nicht alles mitkopiert.

    C:\###\CoursewarePrüfung\IMT\1 MathematicsMathematicsMathematics###courseware>

    Die # ersetzen einige Buchstaben die hier nix zu suchen haben
    AW: VBA Fehlermeldung
    01.11.2018 11:46:56
    mmat
    Hallo Cord,
    wie gesagt, der Fehler kann nur im zweiten Teil passieren, bei dem der Debugger nix anzeigt. Das Objekt auf das hier zugegriffen wird, ist nicht initialisiert, daher Fehler 91. Du hast geschrieben, dass es nicht in jedem Ordner passiert, also unterscheiden sich die Eingangsdaten vermutlich in einem bestimmten Detail.
    Ohne zu wissen, was das Ding eigentlich machen soll und ohne aufwändige Analyse käme auch ich hier nicht weiter. Sorry.
    Anzeige
    AW: VBA Fehlermeldung
    01.11.2018 07:53:15
    Cord
    Komisch immer kommt nur die hälfte oben an.
    Ich kann den Inhalt nicht anzeigen, habe jetzt eine der Dateien hochgeladen die Dateiendung ist .itscwx.
    Cord
    https://www.herber.de/bbs/user/125037.txt
    AW: VBA Fehlermeldung
    29.10.2018 17:15:22
    Daniel
    Hi
    bei mir steigt der Code schon in der ersten Zeile aus, weil mein Excel den Variablentyp "Folder" nicht kennt.
    Ich würde mal sagen, der Code ist so speziell, dass du dich da schon an den wenden musst, der den Code geschrieben hat.
    Gruß Daniel
    AW: VBA Fehlermeldung
    29.10.2018 17:33:02
    Daniel
    Hi
    bei mir steigt der Code schon in der ersten Zeile aus, weil mein Excel den Variablentyp "Folder" nicht kennt.
    Ich würde mal sagen, der Code ist so speziell, dass du dich da schon an den wenden musst, der den Code geschrieben hat.
    Gruß Daniel
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige