Thema Datum  Von Nutzer Rating
Antwort
Rot Programm fehler/Änderung nötig
05.04.2013 21:29:13 Exo
NotSolved
06.04.2013 17:24:26 Gast91534
*****
Solved
14.04.2013 13:13:23 Exo
NotSolved

Ansicht des Beitrags:
Von:
Exo
Datum:
05.04.2013 21:29:13
Views:
2352
Rating: Antwort:
  Ja
Thema:
Programm fehler/Änderung nötig

Hallo,

 

ich habe folgendes Programm, es funktioniert soweit tadellos.

Nur es gibt zwei Probleme:

- bei Kombinationen über 40; 6 bekomme ich immer "Laufzeitfehler 7 nicht genügend Speicher"

  •   Was muss man im Programm ändern damit dieser Fehler nicht mehr kommt?

- die Zellenanzahl in Excel 2013 ist auf 1048576 limitiert

  •   Was muss man ändern damit er nach dem erreichen der Zelle A 1048576 in der Zelle M1 weitermacht?

 

Folgend das Programm:

Sub KombinationenOhneZuruecklegenArray(ByVal n As Integer, ByVal k As Integer, ByRef ar As Variant)
   Dim i As Long, j As Integer, lngSize As Long
   
   lngSize = WorksheetFunction.Combin(n, k)
   ReDim ar(1 To lngSize, 1 To k)
   For j = 1 To k
      ar(1, j) = j - 1 ' j um ab 1 zu zählen
   Next
   
   For i = 2 To lngSize
      For j = 1 To k
         ar(i, j) = ar(i - 1, j)
      Next
      arInc ar, i, n - 1, k, k  ' arInc ar, i, n, k, k ' um ab 1 zu zählen
   Next
   ' Range("A1").Resize(lngSize, k) = ar
End Sub

Sub arInc(ByRef ar As Variant, ByVal i As Long, ByVal n As Integer, ByVal k As Integer, ByVal intSpalte As Integer)
   Dim intVal As Integer, j As Integer
   
   intVal = ar(i, intSpalte)
   If intVal < n - (k - intSpalte) Then
      For j = intSpalte To k
         intVal = intVal + 1
         ar(i, j) = intVal
      Next
   Else
      arInc ar, i, n, k, intSpalte - 1
   End If
End Sub

Sub x()
   Dim n As Integer, k As Integer, lngSize As Long
   Dim i As Long, j As Integer
   Dim arKombis, arStrings, arHilf, arZahlen
   
   arZahlen = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49)
   n = 49
   k = 6
   KombinationenOhneZuruecklegenArray n, k, arKombis
   
   lngSize = UBound(arKombis)
   ReDim arStrings(1 To lngSize, 1 To 1)
   ReDim arHilf(1 To k)
   
   For i = 1 To lngSize
      For j = 1 To k
         arHilf(j) = arZahlen(arKombis(i, j))
      Next
      arStrings(i, 1) = Join(arHilf, ", ")
   Next
   Range("A1").Resize(lngSize) = arStrings
End Sub

Vielen Dank für Eure super Unterstützung!

 

Gruß

Exo


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Programm fehler/Änderung nötig
05.04.2013 21:29:13 Exo
NotSolved
06.04.2013 17:24:26 Gast91534
*****
Solved
14.04.2013 13:13:23 Exo
NotSolved