Microsoft Excel

Herbers Excel/VBA-Archiv

Array - Index außerhalb des gültigen Bereichs


Betrifft: Array - Index außerhalb des gültigen Bereichs
von: Marc
Geschrieben am: 16.09.2019 10:08:10

Guten Morgen liebe Forumsgemeinde,

ich möchte im folgenden Code ein Array mit einer Spalte und x Zeilen dynamisch mit Werten füllen aber ich bekomme den im Betreff genannten Fehler, der sich auf die markierte Zeile bezieht:

  
  
  Public Sub Eraser(ByVal Referenz As String, ByVal EntryNr As Long, ByVal Endrow As Long, ByVal   _
   _
   _
  _
  SpaltenIndex As Integer, ByVal Spalte2Index As Integer, ByVal Betrag As Currency)
  
  
  Dim j As Long
  Dim Nextlog As Long
  Dim Payments As Integer ' Hilfsvariable, falls eine Forderung durch mehrere Zahlungen geklärt    _
   _
  _
  _
  wurde
  Payments = 0
  
  Dim tArray() ' As Long
  tArray(Payments) = EntryNr - 1   '<<<<<<<<<<<<<<<<<<<<<<<<<<<<  "Index außerhalb des gültigen    _
   _
  _
  _
  Bereichs!"
  
  ' Abgleich & Kumulation der gefunden Einträge
  
  
  For j = EntryNr To Endrow
  
  If Restanten.Cells(j, SpaltenIndex).Value = Referenz Then
  
  Betrag = Betrag + Restanten.Cells(j, Spalte2Index).Value
  
  Payments = Payments + 1
  
  ReDim Preserve tArray(Payments)
  
  tArray(Payments) = (EntryNr - 1) + j
  
  Else
  End If
  
  Next j
  
  
  ''''''''''' Übertrag ins Logsheet
  
  If Logsheet.Range("A1").Value = "" Then Logsheet.Range("A1").Value = "Logdaten:"
  
  
  
  ' Klärung von Einträgen
  
  If Betrag = 0 Then
  
  Nextlog = Logsheet.UsedRange.Rows.Count + 1  ' Nächste freie Zeile im Logsheet ermitteln
  
  
  
  For x = 0 To Payments - 1
  
  
  Restanten.Rows(tArray(x)).Copy Logsheet.Rows(Nextlog)
  
  Nextlog = Nextlog + 1
  
  Next x
  
  Else
  End If
  
  
  
  End Sub



Was ist an der Zeile falsch?

Viele Grüße,
Marc

  

Betrifft: AW: Array - Index außerhalb des gültigen Bereichs
von: 1713261.html
Geschrieben am: 16.09.2019 10:12:16

Hallo Marc,

du dimensionierst zwar tArray() als Array hast ihm aber bis zur fehlerhaften Zeile noch keinen Index zugewiesen. Das machst du erst in dieser Zeile: ReDim Preserve tArray(Payments)

Gruß
Nepumuk

  

Betrifft: AW: Array - Index außerhalb des gültigen Bereichs
von: 1713264.html
Geschrieben am: 16.09.2019 10:31:51

Hallo Nepumuk,

da lag der Fehler. Ich habe es nun gelöst indem ich direkt nach der ersten Dimensionierung eine Redimensionierung durchgeführt habe::

Dim tArray() As Long
ReDim tArray(Payments)

tArray(Payments) = EntryNr - 1


Vielen Dank und Gruß,
Marc