Speicherplatz durch VBA-Codes

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Speicherplatz durch VBA-Codes
von: Demian
Geschrieben am: 19.04.2005 16:49:46
Hallo Leute, macht es einen Unterschied, wo ich die VBA-Codes hinterlege? Habe ein Programm erstellt mit 25 Arbeitsblättern. Zu jedem Arbeitsblatt gehört ein Modul mit einem VBA-Code. Sehen alle gleich aus:


Sub Ausw()
    Sheets("Master").Select
    Range("A7:H100").Select
    Selection.Copy
    Sheets("Ausw16").Select
    Range("A6").Select
    ActiveSheet.Paste
    Range("A5:H100").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=5, Criteria1:="<25000", Operator:=xlAnd
    Selection.AutoFilter Field:=8, Criteria1:="latent"
    Selection.AutoFilter Field:=7, Criteria1:="5"
    Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Also wirklich nichts weltbewegendes... Das Programm ist nun aber über 28MB gross! hat jemand eine Ahnung, wie das kommen kann? Sollten die Codes besser in ein Modul?
Grüße
Bild

Betrifft: AW: Speicherplatz durch VBA-Codes
von: Luc
Geschrieben am: 19.04.2005 17:04:15
Hallo Demian,
direkt zu Arbeitsblättern und Arbeitsmappe gehören Klassenmodule (.cls) für die entsprechenden Ereignisse - ebenso zu Userforms. Sonst legt man 1 bis mehrere (je nachdem wie übersichtlich man es haben will) normale Module (.bas) an, die sonstige Prozeduren, so wie deine, enthalten. Wenn die alle gleich sind, reicht eine einzige für alle Arbeitsblätter - sie muss sich nur auf das jeweils aktuelle ABlatt beziehen bzw es muss ihr namentlich mitgeteilt wdn.
Gruß Luc :-?
Bild

Betrifft: AW: Speicherplatz durch VBA-Codes
von: Mathias
Geschrieben am: 19.04.2005 17:05:52
Hallo Demian,
wenn der Code für alle Tabellenblätter gleich ist.
Warum schreibst du dann den code nicht nur einmal? sollte er an verschiedenen Stellen in der Prozedur aufgerufen werden, kannst du das ja über Call erledigen
Gruss Mathias
Bild

Betrifft: AW: Speicherplatz durch VBA-Codes
von: Volker
Geschrieben am: 19.04.2005 17:07:32
Hallo Demian,
zunächst mal brauchst Du den zu kopierenden Bereich und den Zielbereich für das Kopieren und Einfügen nicht zu selektieren.
Ich nehme mal an, dass deine 25 Makros durch einen Button in dem jeweiligen Arbeitsblatt angestoßen werden. Wenn Du alle Buttons mit einem einzigen Markro verknüpfst und in diesem Makro Sheet("xyz") durch ActiveSheet ersetzt, kannst Du alles mit einem Makro erschlagen:

Sub Ausw()
    Sheets("Master").Range("A7:H100").Copy
    ActiveSheet.Range("A6").Insert
    ActiveSheet.Range("A5:H100").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=5, Criteria1:="<25000", Operator:=xlAnd
    Selection.AutoFilter Field:=8, Criteria1:="latent"
    Selection.AutoFilter Field:=7, Criteria1:="5"
    Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub


Gruß
Volker
Bild

Betrifft: AW: Speicherplatz durch VBA-Codes
von: Holger
Geschrieben am: 19.04.2005 17:31:05
Hi,
diese Dateigröße kommt mit Sicherheit nicht durch die Makros zustande.
mfg Holger
Bild

Betrifft: oops, hast recht.....
von: Volker
Geschrieben am: 19.04.2005 17:39:28
....das wollte ich eigentlich auch antworten.
Hab die Antwort wohl im Eifer des Gefechtes zu vorschnell abgeschickt.
Wodurch wird das file denn nun Deiner Meinung nach aufgebläht?
@Demian
Manchmal hilft das kopieren in eine neue Mappe, wenn Dir das bei 25 Tabellen nicht zu viel Arbeit ist.
Gruß
Volker
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Speicherplatz durch VBA-Codes"