Ich habe einige Excel-Code, der ein Array von Dateinamen zusammenfügt und dann durchschleift und einige Daten von ihnen extrahiert. Die Daten befinden sich nicht in der Kalkulationstabelle selbst - sie ist vollständig in VBA zusammengestellt. Neue Dateien werden jeden Monat hinzugefügt, daher wird die Anzahl variieren.Excel VBA finden den letzten Eintrag in einem Array (aber nicht in der Kalkulationstabelle)
Mein Problem ist, dass Code, der funktionierte, nicht mehr funktioniert, und ich versuche, eine Abhilfe zu finden. (In Verbindung stehendes: Error: Microsoft Excel has stopped working - But I didn't change anything)
UBound findet die Größe des Feldes. Aber das Array ist nicht vollständig mit Daten gefüllt. Wie finde ich das letzte Element im Array, das etwas enthält?
Ich suche und finde Antworten, die sich auf die Anzahl der Elemente in einer Tabelle beziehen, aber das verwendet kein Arbeitsblatt. Es scheint, als wäre CountA, was ich will, aber Excel: Find last value in an array hat kein Beispiel, das ich herausfinden kann, um Arbeit in meinem Fall zu machen.
Mit anderen Worten, ich möchte etwas außer UBound in dem Code unten verwenden, also gehe ich nicht über die Einträge, die etwas in ihnen haben.
FName = Array("april2010.xls", "feb2010.xls", "jan2010.xls", "july2010.xls", "june2010.xls", _
"mar2010.xls", "may2010.xls", "sep2010.xls", "..\FINAL-MO-BAL-2011\APRIL2011.xls", _
"..\FINAL-MO-BAL-2011\AUG2011.xls", "..\FINAL-MO-BAL-2011\DEC2011.xls", _
"..\FINAL-MO-BAL-2011\FEB2011.xls", "..\FINAL-MO-BAL-2011\JAN2011.xls", _
"..\FINAL-MO-BAL-2011\JULY2011.xls", "..\FINAL-MO-BAL-2011\JUNE2011.xls", _
"..\FINAL-MO-BAL-2011\MARCH2011.xls", "..\FINAL-MO-BAL-2011\MAY2011.xls", _
"..\FINAL-MO-BAL-2011\NOV2011.xls", "..\FINAL-MO-BAL-2011\OCT2011.xls", _
"..\FINAL-MO-BAL-2011\SEP2011.xls", FName2, FName3, FName4, FName5, FName6, _
FName7, FName8, FName9, FName10, FName11, FName12, FName13, FName14, FName15, _
FName16, FName17, FName18, FName19, FName20, FName21, FName22, FName23, FName24, _
FName25, FName26, FName27, FName28, FName29, FName30, FName31, FName32, FName33, _
FName34, FName35, FName36, FName37, FName38, , FName39, FName40, FName41, FName42, _
FName43, FName44, FName45, FName46, FName47, FName48, FName49)
If IsArray(FName) Then
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
WorkbookName = ThisWorkbook.Name
rnum = 1
For Fnum = LBound(FName) To UBound(FName)
Set mybook = Nothing
On Error Resume Next
Set mybook = Workbooks.Open(Filename:=FName(Fnum), ReadOnly:=True)
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
.CutCopyMode = False
.DisplayAlerts = False
.Visible = False
End With
On Error GoTo 0
If Not mybook Is Nothing Then
On Error Resume Next
leer es in in einem anderen Array (anfänglich die gleichen Größen sortiert ist) jedoch mit Ausnahme, wo LEN = 0 oder eine solche Logik, einen Zähler mit diesem inkrementieren und dann Zähler ReDim zu erhalten -1 bei Ende ? – QHarr
Oder Schleife das Array und beenden Sie die Schleife, wenn die Testbedingung erfüllt ist, z. = VbNullString und nimm den aktuellen Index? – QHarr
Können Sie weitere Informationen zu *** nicht mehr funktionierend *** und *** nicht vollständig mit Daten *** liefern? Meinst du, dass irgendeine 'FNameXX'-Variable leer ist oder sich auf eine Datei bezieht, die nicht in deinem Dateisystem existiert? –