Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA nicht genügend Speicher, Modul zu gross

VBA nicht genügend Speicher, Modul zu gross
lobby007
Hallo Excel-Spezialisten,
ich habe ein Excel-Projekt bei dem man viele Zellen übernehmen muß.
Code sieht immer so aus:
[BBM1!D10] = [DatenM1!BC2]
[BBM1!D11] = [DatenM1!BD2]
[BBM1!D12] = [DatenM1!BE2]
[BBM1!D13] = [DatenM1!BF2]
[BBM1!D14] = [DatenM1!BG2]
davon gibt es tausende Zeilen in diversen Modulen.
Ich habe den Code in separaten Dateien hergeleitet.
Wenn ich jetzt auf einfügen gehe bekomme ich irgendwann die Meldung: Microsoft Visual Basic, Nicht genügend Speicher.
Habe schon kompliert und alles aber irgendwann ist es immer so weit.
Ist da eine Excel-Grenze erreicht? Kann man da was machen? Habe schon den ganzen Code hergeleitet und würde ungerne noch mal anfangen.
Kann man den Code sinnvoll kürzen?
Ist wirklich dringend.
Vielen Dank
Gruß
lobby

44
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA nicht genügend Speicher, Modul zu gross
mumpel
Hallo!
Die Größe eines jeden Moduls ist auf 64kb begrenzt. Die Anzahl der Module ist vom Arbeitsspeicher abhängig. Kürzen kann man immer. Vor allem solltest Dua uf Slect und Activate verzichten. Ein Beispielcode wäre hilfreich, Dateien kannst Du hier anhängen.
Gruß, Rene

AW: VBA nicht genügend Speicher, Modul zu gross
lobby007
Hallo Rene,
das ganze hat 20 Module, ein Modul hat erkürzt folgenden Inhalt: ( es sind nur mehr Übernahmezeilen dazwischen:

Sub Einzeldaten1SP()
Application.ScreenUpdating = False
With Application
.Calculation = xlManual
End With
[BBSp!B8] = [DatenSp!G2]
[BBSp!B9] = [DatenSp!H2]
[BBSp!B10] = [DatenSp!I2]
[BBSp!B11] = [DatenSp!J2]
[BBSp!B12] = [DatenSp!K2]
[BBSp!B13] = [DatenSp!L2]
[BBSp!B14] = [DatenSp!M2]
[BBSp!B15] = [DatenSp!N2]
[BBSp!B16] = [DatenSp!O2]
[BBSp!B18] = [DatenSp!P2]
[BBSp!B19] = [DatenSp!Q2]
[BBSp!B20] = [DatenSp!R2]
[BBSp!B21] = [DatenSp!S2]
[BBSp!B22] = [DatenSp!T2]
[BBSp!B23] = [DatenSp!U2]
[BBSp!B24] = [DatenSp!V2]
[BBSp!B25] = [DatenSp!W2]
[BBSp!C8] = [DatenSp!AD2]
[BBSp!C9] = [DatenSp!AE2]
[BBSp!C10] = [DatenSp!AF2]
[BBSp!C11] = [DatenSp!AG2]
[BBSp!C12] = [DatenSp!AH2]
[BBSp!C13] = [DatenSp!AI2]
[BBSp!C14] = [DatenSp!AJ2]
[BBSp!C15] = [DatenSp!AK2]
[BBSp!C16] = [DatenSp!AL2]
[BBSp!C18] = [DatenSp!AM2]
[BBSp!C19] = [DatenSp!AN2]
[BBSp!C20] = [DatenSp!AO2]
[BBSp!C21] = [DatenSp!AP2]
[BBSp!C22] = [DatenSp!AQ2]
[BBSp!C23] = [DatenSp!AR2]
[BBSp!C24] = [DatenSp!AS2]
[BBSp!C25] = [DatenSp!AT2]
[BBSp!D8] = [DatenSp!BA2]
Application.ScreenUpdating = True
With Application
.Calculation = xlAutomatic
End With
End Sub


Ich habe es schon mit mehr Modulen versucht aber das hilft auch nicht. Irgendwann scheint bei dem gesamten Code aller Module schluß zu sein?!
Mein Problem ist das ich wieder von vorne anfange wenn ich den ganzen Code nicht übernehmen kann. Habe jetzt 4 von 14 Modulen fertig - und da steigt er eben aus.
Gruß lobby

Anzeige
AW: VBA nicht genügend Speicher, Modul zu gross
Klaus-Dieter
Hallo Lobby,
du kannst den Quelltext auf diese Art verkürzen, möglicherweise hilft das.
Sheets("BBSp").Range("B8:B16") = Application.WorksheetFunction.Transpose(Sheets("DatenSp").Range("G2:O2"))
Sheets("BBSp").Range("B18:B25") = Application.WorksheetFunction.Transpose(Sheets("DatenSp").Range("P2:W2"))
Sheets("BBSp").Range("C8:C16") = Application.WorksheetFunction.Transpose(Sheets("DatenSp").Range("AD2:AL2"))
Sheets("BBSp").Range("C18:C25") = Application.WorksheetFunction.Transpose(Sheets("DatenSp").Range("AM2:AT2"))
Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
Warum...
{Boris}
Hi,
...[evaluierst] Du denn bis der Arzt kommt? Hab natürlich keine Ahnung, ob es daran liegt (bestimmte Grenze bezgl. Anzahl Evaluierungen?), aber Du könntest Dir ne Menge Schreibarbeit sparen, wenn Du mit ein paar Schleifen arbeitest. Das hier z.B.

[BBSp!B8] = [DatenSp!G2]
[BBSp!B9] = [DatenSp!H2]
[BBSp!B10] = [DatenSp!I2]
[BBSp!B11] = [DatenSp!J2]
[BBSp!B12] = [DatenSp!K2]
[BBSp!B13] = [DatenSp!L2]
[BBSp!B14] = [DatenSp!M2]
[BBSp!B15] = [DatenSp!N2]
[BBSp!B16] = [DatenSp!O2]
[BBSp!B18] = [DatenSp!P2]
[BBSp!B19] = [DatenSp!Q2]
[BBSp!B20] = [DatenSp!R2]
[BBSp!B21] = [DatenSp!S2]
[BBSp!B22] = [DatenSp!T2]
[BBSp!B23] = [DatenSp!U2]
[BBSp!B24] = [DatenSp!V2]
[BBSp!B25] = [DatenSp!W2]


sollte auch so gehen (ungetestet):


Dim x As Long
For x = 8 To 25
Worksheets("BBSp").Cells(x, 2) = Worksheets("DatenSp").Cells(2, x-1)
Next x


Grüße Boris

Anzeige
AW: Warum... @Boris
Rudi
Hallo Boris,
und überhaupt ist [] zwar schnell zu schreiben aber in der Verarbeitung die langsamste aller Möglichkeiten.
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.

...ist ja auch kein Standard-VBA! ;-) Gruß owT
Luc:-?
:-?

AW: ...ist ja auch kein Standard-VBA! ;-) Gruß owT
Luschi
Hallo Luc,
ein Standard-Vba hat es noch nie gegeben; jedes M$-Programm kocht da sein eigenes Süppchen.
Versuche mal mit Deinem Wissen von Excel-Vba etwas in Access zu machen. Da wirst Du aber schwer umdenken müssen.
Für Excel ist lt. Vba-Hilfe Folgendes definiert (auch in 2007, denn da steht es so drin):
Die Verwendung eckiger Klammern (z. B. "[A1:C5]") entspricht dem Aufrufen der Evaluate-Methode mit einem Zeichenfolgenargument. Beispielsweise besitzen die folgenden Ausdruckspaare dieselbe Bedeutung:
[a1].Value = 25
Evaluate("A1").Value = 25
Gruß von Luschi
aus klein-Paris

Anzeige
AW: ...ist ja auch kein Standard-VBA! ;-) Gruß owT
lobby007
Hallo Luschi,
danke für die Info.
Löst aber leider mein Problem nicht.
Weißt Du warum die Speichermeldung kommt? Ist einfach zu viel Code in dem Projekt? (sind mehr als 10.000 Zeilen...)
Gibt es einen Trick das zu umgehen?
Gruß lobby

AW: ...ist ja auch kein Standard-VBA! ;-) Gruß owT
Hajo_Zi
Hallo Nick,
verteile Deinen Code auf mehrere Module und voielleicht hilft auch eine Optimierung

AW: ...ist ja auch kein Standard-VBA! ;-) Gruß owT
Dieter
Hi,
hast du schon mal eine kleine Schriftgröße probiert?
mfg Dieter

Er will das Pgm doch nicht drucken! Und...
Luc:-?
...Bytes sind in kleiner Schriftgröße genauso lang wie in großer!
Das Einzige, was hilft, wurde schon empfohlen:
1. Code optimieren, also zyklische Verarbeitung, wo und wenn möglich.*
2. Pgmieren in Fortsetzungen, d.h. eine Sub(routine) ruft die nächste auf (auch in anderem Modul!). So habe ich das Problem mal gelöst. Allerdings war das kein Geradeaus-Pgm, sondern eine hochkomplexe udFkt mit vielen Verarbeitungszyklen. Auch so kann man den von MS gesetzten Rahmen sprengen... ;-)
Gruß Luc :-?
*Anmerkung: Evtl Notation der Adressen in Zuordnungslisten (als Variant mit Array), die dann ohne weiteres zyklisch abgearbeitet wdn können, auch, wenn die Adressen keine zusammenhängenden Bereiche bilden. Alternativ könnte man die betroffenen Zellen auch zuvor per vbFkt Union vereinen.

Anzeige
AW: Er will das Pgm doch nicht drucken! Und...
lobby007
Hi Luc,
hast Du ein Beispiel für so einen Zuordnungs/Arry-Code?
Das mit Fortsetzungen und mehreren Modulen habe ich probiert aber er steigt trotzdemn aus.
Gruß lobby

Neben der von Klaus-Dieter vorgeschlagenen...
Klaus-Dieter
...und bei deinem Bsp mit 6 Blöcken anwendbaren Transpose(MTRANS)-Operation, Lobby,
sind in den Fällen, bei denen K-D's Methode nicht sinnvoll wäre, ff 3 Methoden anwendbar...
1a. Variant-Array:

Dim i As Long, xBBSp As Variant, xDatSp As Variant
xBBSp = Array("B8", "B10", "B12", "C8", "C18", "D8")
xDatSp = Array("G2", "I2", "K2", "AD2", "AM2", "BA2")
For i = LBound(xBBSp) To UBound(xBBSp)
Worksheets("BBSp").Range(xBBSp(i)) = Worksheets("DatenSp").Range(xDatSp(i))
Next i


1b. Variant-Array aus Adress-Konstanten:


Dim i As Long, q As Variant, x As Variant
Const xBBSp As String = "B8 B10 B12 C8 C18 D8"
Const xDatSp As String = "G2 I2 K2 AD2 AM2 BA2"
q = Split(xDatSp, " "): i = LBound(q)
For Each x in Split(xBBSp, " ")
Worksheets("BBSp").Range(x) = Worksheets("DatenSp").Range(q(i)): i = i + 1
Next x


2. Range mit vbFunktion Union:


Dim i As Long, x As Range, xBBSp As Range, xDatSp As Range
With Worksheets("BBSp")
xBBSp = Union(.Range("B8"), .Range("B10"), .Range("B12"), .Range("C8"), .Range("C18"), . _
Range("D8"))
End With
With Worksheets("BBSp")
xDatSp = Union(.Range("G2"), .Range("I2"), .Range("K2"), .Range("AD2"), .Range("AM2"), . _
Range("BA2"))
End With
For Each x In xBBSp
i = i + 1: x = xDatSp.Cells(i)
Next x
xBBSp = Nothing: xDatSp = Nothing


Gruß Luc :-?

Anzeige
AW: Neben der von Klaus-Dieter vorgeschlagenen...
Klaus-Dieter
Hi Luc,
das muß ich mir mal in Ruhe ansehen und durchtesten - sieht aber wirklich stark aus.
Ich bastle gerade an dieser Lösung von Daniel:
Hi
so ist es besser
als schleife könnte sowas so aussehen:

Sub Einzeldaten1SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim ze As Long, sp As Long
sp = 7
For ze = 8 To 25
Select Case ze
Case 11, 17
Case Else
Sheets("BBsp").Cells(ze, 2).Value = Sheets("Datensp").Cells(2, sp)
sp = sp + 1
End Select
Next
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
End With
End Sub


Das ist eigentlich optimal weil ich die Lücken einfach als Zahl eingeben kann.
Aber das geht ja immer nur für eine Spalte.
Weißt Du wie das Makro für mehrere Spalten aussehen würde? (Hier nur Spalte 7 = G). Man müßte dann wohl auch bei BBSp statt der Spalte 2 eine Startspalte angeben?!
Mein Problem ist das ich Blöcke habe: In Blatt Daten sind die Daten in 32 Zeilen runter aufgebaut und in BB.. sind die 32 Einträge in den Spalten.
Gruß lobby007

Anzeige
Ja, Daniels Lösung ist eine weitere Möglichkeit,..
Luc:-?
...die man auch auf mehrere Zielspalten ausdehnen könnte, Lobby.
Wenn angenommen wdn kann, dass die "Lücken" stets in den gleichen Zielzeilen der Zielspalten auftreten und die Zielspalten stets gleich den Quellzeilen sind, kannst du hier einfach einen For...Next-Zyklus für die Spalten "draufsetzen"...

Dim qs As Long,  zs As Long,  zz As Long
qs = 7
For zs = 2 To 33
For zz = 8 To 25
Select Case zz
Case 11, 17
Case Else
Sheets("BBsp").Cells(zz, zs) = Sheets("Datensp").Cells(zs, qs).Value
qs = qs + 1
End Select
Next zz
Next zs


Wenn es da Unterschiede gibt, wird's etwas komplizierter, aber nicht unlösbar!
Aber das lässt sich alles auch eleganter auf der Basis von K-D's Lösung bewerkstelligen, wenn der For...Next-Zyklus so gestaltet wird, dass die Quelldaten in jeweils 3 Blöcken pro Zielspalte verarbeitet wdn. (Immer unter der Voraussetzung, dass die o.g. Annahmen zur Datenstruktur zutreffend sind!)
Gruß Luc :-?

Anzeige
AW: Ja, Daniels Lösung ist eine weitere Möglichkei
lobby007
Hi Luc,
vielen Dank für den Code.
Ich werde das mal probieren - habe auch einiges dabei gelernt...
Z.B. erst genau hinsehen und dann loslegen: als ich heute loslegen wollte habe ich gesehen das es immer max. für eine Zeile geht - auch mit Deinen oder K-Ds Lösungen. Denn in einer Reihe im Blatt Daten kommen erst ca. 22 Spalten für einen Namen+einen Bezugszeitpunkt, dann wieder 22 und dann noch mal. Und dann kommt die nächste Zeile für den nächsten Namen... Zumindest ändert sich immer nach 22 Spalten die in Zeilen transponiert werden müssen die Spalte.... Das ist echt eine blöde Matrix aber ich habe das Programm so geerbt.
Habe mir jetzt unten Formeln gebastelt und in das richtige Format Spalten/Zeilen gebracht - das übernehme ich dann je Bereich mit Werte kopieren (statt Transponieren).
Vielen Dank für Deine Hilfe und Mühe
Ich wünsche Dir noch einen schönen Abend.
Gruß lobby

Anzeige
Bitte sehr! Viel Erfolg! Gruß owT
Luc:-?
:-?

Das siehst du wohl falsch! Es gibt natürlich...
Luc:-?
...anwendungsbezogene Dialekte (was mich schon immer geärgert hat!), Luschi,
aber auch, wenn in einem "Dialekt" etwas möglich ist, muss es noch nicht die empfohlene (Standard-)Methode sein, weshalb es ja auch möglicherweise in anderen "Dialekten" unbekannt ist. Und Evaluate in dieser oder jener Schreibweise ist zwar möglich, aber nicht die Standardmethode der Zellauswertung (weshalb es ja auch länger dauert und möglicherweise beim Testen stört - allerdings ist der gen.Ausdruck dafür wohl zu kurz). Wenn man nämlich eine udF mittels Evaluate auswertet, kann man das Pgm nicht innerhalb dieser Fkt anhalten!
Gruß Luc :-?

AW: Das siehst du wohl falsch! Es gibt natürlich..
lobby007
Hallo Luc,
ihr habt wahrscheinlich beide Recht und VBA hat so seine Tücken - ich habe aber das Problem und noch keine Lösung/Erklärung.
Gibt es eine maximalgrenze für alle Module zusammen?
Gruß lobby007

AW: Das siehst du wohl falsch! Es gibt natürlich..
Gerd
Hi,
setz da, wo es möglich ist, Schleifen ein. Den rest musst du dann halt zu Fuß erledigen.
Wie du ja schon erkannt hast, ist ein Modul auf 64 Kb begrenzt, die absolute Grenze ist
durch den excelinternen Speicher, der bei deiner Version auf etwas über 1 GB liegt,
begrenzt.
mfg Gerd

AW: Das siehst du wohl falsch! Es gibt natürlich..
lobby007
Hi Gerd,
das mit der Grenze kann nicht sein.
In dem einzelnem Modul ist fast nichts drin. Uns gesamt sind es max. 12 MB denn soviel hat die geamte Herleitungsdatei für den Code.
gruß lobby

AW: Das siehst du wohl falsch! Es gibt natürlich..
Gerd
Hi,
wie du meinst.
mfg Gerd

AW: Das siehst du wohl falsch! Es gibt natürlich..
lobby007
Hi Gerd,
habe es jetzt noch probiert: selbst wenn ich noch ein leeres Modul hizufüge sagt er nicht genug Speicher.
gruß lobby

AW: Das siehst du wohl falsch! Es gibt natürlich..
Hajo_Zi
Hallo Bby,
Du hast dock geschrieben 10.000 Zeilen und das werden schon mehr als 64 KB sein.
Gruß Hajo

AW: Das siehst du wohl falsch! Es gibt natürlich..
lobby007
Hi Hajo,
gelten die 64 kb für alles oder je Modul?
Habe mal ein leeresModul angefügt - selbst dann heißt es nicht genug speicher?
Gruß
lobby

AW: Das siehst du wohl falsch! Es gibt natürlich..
Hajo_Zi
Hallo,
wenn ein Modul zu groß ist kannst ein Modul oder 100 hintzufügen, damit wir der Code in dem einem Modul auch nich kleiner.
Liest Du die Beiträge? Es Stand schon paarmal drin je Modul. Arbeite bei Deinem Code mit einer Schleife.
Gruß Hajo

AW: Das siehst du wohl falsch! Es gibt natürlich..
lobby007
Hallo Hajo,
bevor ich das neue Modul einfüge ist alles in ordnung.
dann tippe ich test() und eine zeile code - und er sagt beim enter sofort - kein speicher mehr.
es fuktioniert also eben nicht mit mehreren Modulen.
gruß lobby007

Hajo hat schon recht! Es passen ca 9-10Tsd...
Luc:-?
..."normal volle" Codezeilen in ein Modul, Lobby!
Ich fürchte aber beinahe, du hast (noch) ein anderes Problem!
Gruß Luc :-?
PS: Gewünschtes Bsp demnächst oben!

AW: Hajo hat schon recht! Es passen ca 9-10Tsd...
lobby007
Hallo, hat jemand die Lösung für mehrere Lücken?

Sub Einzeldaten1SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim ze As Long, sp As Long
sp = 7
For ze = 8 To 25
Select Case ze
Case 17
Case Else
Sheets("BBsp").Cells(ze, 2).Value = Sheets("Datensp").Cells(2, sp)
sp = sp + 1
End Select
Next
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
End With
End Sub


dies ist das Makro für den Fall, wenn Lücken in der Zieltabelle auftreten, die Lücke ist hier die Zeile 17.
Weitere Lücken können hier mit Komma angefügt werden
wenn Lücken in den Quelldaten auftreten, würde ich diese Daten makrieren (die Lücke nicht mit makrieren ) und per Copy-Paste-Transpose in den Zielbereich einfügen.
Gruß, Daniel
Ich bräuchte nur die Lücken in z.B. Zeilen 8,12 und 17 (wie oben).
Gruß lobby

AW: Warum... @Boris
lobby007
Hallo Boris was ist denn besser als []?
Gruß Lars

AW: Warum...
lobby007
Hallo Boris,
danke das sieht in der Tat ganz gut aus.
Ich habe aber eben den ganzen Code eigentlich fertig. Hast Du eine Ahnung warum Excel nicht mehr Code aufnimmt?
Wie würde man deinen Code mehrfach hintereinander laufen lassen? Wie Du vielleicht siehst sind auch Lücken dazwischen, so dass Dein Code nicht wirklich gehen würde (nach C16 kommt C18...). Und das ist bei jedem Blatt anders.
Trotzdem die Frage, wie würde das mehrfach hintereinander aussehen? Wenn ich danach C9... nach AD2... übertragen muß?
Gruß und danke lobby

AW: Warum...
Klaus-Dieter
Hallo Lobby,
mein Vorschlag berücksichtigt die Lücken.
Viele Grüße Klaus-Dieter

Online-Excel

AW: Warum...
lobby007
Hallo Klaus-Dieter,
Deiner ja aber der erste
Dim x As Long
For x = 8 To 25
Worksheets("BBSp").Cells(x, 2) = Worksheets("DatenSp").Cells(2, x-1)
Next x
hat sie nicht berücksichtigt.
Gruß lobby

AW: Warum...
Daniel
Hi
als schleife könnte sowas so aussehen:

Sub Einzeldaten1SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim ze As Long, sp As Long
sp = 7
For ze = 8 To 25
Select Case ze
Case 17
Case Else
Sheets("BBsp").Cells(ze, 2).Value = Sheets("Datensp").Cells(2, sp)
End Select
Next
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
End With
End Sub


dies ist das Makro für den Fall, wenn Lücken in der Zieltabelle auftreten
wenn Lücken in den Quelldaten auftreten, würde ich diese Daten makrieren (die Lücke nicht mit makrieren ) und per Copy-Paste-Transpose in den Zielbereich einfügen.
Gruß, Daniel

AW: Warum...
lobby007
Vielen Dank Daniel,
werde es mal in der Art probieren.
Gruß lobby007

AW: Korrektur
Daniel
Hi
so ist es besser
als schleife könnte sowas so aussehen:

Sub Einzeldaten1SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim ze As Long, sp As Long
sp = 7
For ze = 8 To 25
Select Case ze
Case 17
Case Else
Sheets("BBsp").Cells(ze, 2).Value = Sheets("Datensp").Cells(2, sp)
sp = sp + 1
End Select
Next
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
End With
End Sub


dies ist das Makro für den Fall, wenn Lücken in der Zieltabelle auftreten, die Lücke ist hier die Zeile 17.
Weitere Lücken können hier mit Komma angefügt werden
wenn Lücken in den Quelldaten auftreten, würde ich diese Daten makrieren (die Lücke nicht mit makrieren ) und per Copy-Paste-Transpose in den Zielbereich einfügen.
Gruß, Daniel

AW: Korrektur
lobby007
Hallo Daniel,
das sieht gut aus, 2 Fragen:
wie würde es aussehen wenn in zeile 12 und 15 und 18 eine Lücke wäre? ich verstehe das mit dem Komma nicht und: sp = 7 weil es bei G losgeht?!
Gruß Lobby

AW: Korrektur
Daniel
Hallo
1. frage: konkret krass korrekt gecheckt Alder
2. frage:
soll ein Zweig einer Select Case-Verzweigung, bei mehreren Bedingungen ausgeführt werden, so kann man diese durch Komma getrennt hintereinander eingeben.
Beispiel: die Lücken seien in Zeile 12, 15, 18 und von 21 bis 30

For ze = 8 To 40
Select Case ze
 Case 12, 15, 18, 21 to 30
Case Else
Sheets("BBsp").Cells(ze, 2).Value = Sheets("Datensp").Cells(2, sp)
sp = sp + 1
End Select


Gruß, Daniel

AW: Korrektur
lobby007
Vielen Dank Daniel,
ich wünsche Dir noch einen schönen Abend und vielen Dank nochmals für Deine Mühe.
Gruß
lobby

AW: VBA nicht genügend Speicher, Modul zu gross
Rudi
Hallo,
das kannst du doch einfach in Schleifen packen. Der Code hat dann nur noch Bruchteile der jetzigen Länge.
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.

AW: VBA nicht genügend Speicher, Modul zu gross
lobby007
Hallo Rudi,
wie würde denn z.B. eine Schleife aussehen?
Gruß lobby

Klaus-Dieters Lösung
Beate
Hallo,
warum hast du Klaus-Dieters Lösung unbeachtet gelasssen? Das müsste noch schneller als eine Schleife sein.
Gruß,
Beate

AW: Klaus-Dieters Lösung
lobby007
Hi Beate ich werde es so machen oder mit der Arry-Lösung die noch eingegangen ist.
Gruß lobby

AW: Klaus-Dieters Lösung
Klaus-Dieter
Hallo Beate,
dann hat es ja wenigstens eine bemerkt. ;-)
Schönes Rest WE Klaus-Dieter

Online-Excel

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige