2016-10-14 8 views
0

私はこのデータセットで予測を行うことができるこのVBAコードを持っています。私はオブジェクト変数またはブロック変数が設定されていないエラーをデバッグ

lngCountRows = ActiveWorkbook.Sheets(p_objReportActual.Reportname).Range("A1").End(xlDown).Row - 2

それは常に登場するまでデバッグするとき

Sub EIDOpredsub() 
modDeclarations.initDemo               'DEMO initialisieren 
Dim objEachAnalysis As clsAnalysis             'Zähler für jede Analyse in Sammlung 
Dim rngOutput As Range                'Zellbereich der Ausgabe 
Dim rngInputParameter As Range              'Zellbereich des unabhängigen Parameterspalte 
Dim varInput() As Variant               'Array für die Input-Datei 
Dim varOutput() As Variant               'Array für die Output-Datei 
Dim varInputParameter As Variant             'Array für die unabhängige Parameterspalte 
Dim intEachIndepParameter As Integer            'Zähler für jeden unabhängigen Parameter 
Dim lngEachRow As Long                'Zähler für jede Zeile 
Dim lngCountRows As Long               'Alle Datensätze des Reports 
Dim resultCall As Boolean 


On Error GoTo ErrorHandler               'Abbruch, falls ein unvorgesehener Fehler auftritt 

lngCountRows = ActiveWorkbook.Sheets(p_objReportActual.Reportname) _ 
    .Range("A1").End(xlDown).Row - 2            'Alle Datensätze abzüglich zwei Zeilen für die Überschrift 

For Each objEachAnalysis In p_objReportActual.Analyses        'Für jede Analyse in Sammlung 
    If objEachAnalysis.Aktiv = True Then           'Wenn Analyse aktiviert 
     ReDim varInput(UBound(objEachAnalysis.IndepParameters, 2) + 1, lngCountRows) 'Dann dimensioniere das Inputarray 
     ReDim varInputParameter(1, 1)            'Leere das Array der Parameterspalte 

     For intEachIndepParameter = 0 To UBound(objEachAnalysis.IndepParameters, 2) 'Für jeden unabhängigen Parameter der Analyse 
      Set rngInputParameter = ActiveWorkbook.Sheets(p_objReportActual.Reportname) _ 
       .Range(Cells(2, 1), Cells(2, UBound(p_objReportActual.Parameters, 2) + 1)) _ 
       .Find(objEachAnalysis.IndepParameters(0, intEachIndepParameter), , , xlWhole) 'Finde den Parameter im ersten Block 
      Set rngInputParameter = Range(rngInputParameter, _ 
       rngInputParameter.End(xlDown))          'Dimensioniere den Zellbereich für alle Datensätze 
      varInputParameter = rngInputParameter         'Übergebe den Zellbereich ans Array 

      For lngEachRow = 2 To lngCountRows + 1         'Für jede Zeile 
       If varInputParameter(lngEachRow, 1) = "" Or varInputParameter(lngEachRow, 1) = "-" Then   'Wenn Parameter leer oder "-" sein sollte 
        MsgBox "Zur Analyse " & objEachAnalysis.Analysis & " sind nicht alle Daten vorhanden."  'Dann Warnhinweis 
        GoTo NextAnalysis                   'Springe zur nächsten Analyse 
       End If 

       varInput(intEachIndepParameter, lngEachRow - 2) = varInputParameter(lngEachRow, 1)    'Fülle Input-Array mit Spalten-Array 
      Next lngEachRow 
     Next intEachIndepParameter 

     Set rngOutput = ActiveWorkbook.Sheets(p_objReportActual.Reportname) _ 
      .Range(Range("A2"), Range("A2").End(xlToRight)).Offset(-1, 0) _ 
      .Find(objEachAnalysis.Analysis, , , xlWhole).Offset(2, 0)    'Finde Zellbereich für die Ausgabe der Ergebnisse 
     Set rngOutput = rngOutput.Resize(lngCountRows, UBound(objEachAnalysis.DepParameters, 2) + 1) 'Dimensioniere Zellbereich für alle Datensätze 

     resultCall = callEIDOminerConsole(objEachAnalysis, varInput, varOutput)     'Übertragung an EIDOminerConsole 

     If resultCall Then 
      rngOutput = varOutput              'Fülle Zellbereich mit Array 
     End If 
    End If 
NextAnalysis: 
    Next objEachAnalysis 
    Exit Sub 
ErrorHandler: 
    MsgBox "Die Berechnung wurde abgebrochen. Anscheinend ist die Analyse " & objEachAnalysis.Analysis & " beschädigt." 
End Sub 

は、「変数またはでブロック変数が設定されていないオブジェクト」 が起こって何ができるかと、私はそれをどのように修正するのですか?

+0

この(.Reportname)をjustに変更してみてください。名前 – User632716

+1

'p_objReportActual'とは何ですか? – user3598756

+0

2点確認する:1. 'p_objReportActual.Reportname'または' p_objReportActual.name'が有効な値を返すことを確認します。 2. 'p_objReportActual.Reportname'によって返された名前のシートが実際に存在することを確認します – Zac

答えて

0

変数の前に "set"を追加しようとしましたか?同様に...

"Set lngCountRows = ActiveWorkbook ..."

関連する問題