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
は、「変数またはでブロック変数が設定されていないオブジェクト」 が起こって何ができるかと、私はそれをどのように修正するのですか?
この(.Reportname)をjustに変更してみてください。名前 – User632716
'p_objReportActual'とは何ですか? – user3598756
2点確認する:1. 'p_objReportActual.Reportname'または' p_objReportActual.name'が有効な値を返すことを確認します。 2. 'p_objReportActual.Reportname'によって返された名前のシートが実際に存在することを確認します – Zac