Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
372to376
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
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code blählt Arbeitsmappe auf ??? Hilfe !

Code blählt Arbeitsmappe auf ??? Hilfe !
28.01.2004 16:16:57
Lars
Hallo an alle Excel- Profis !
Habe folgendes Problem:
In meiner Excel Arbeitsmappe befindet sich zu Anfang nur ein Blatt mit verschiedenen Daten von Firmen. Mit meinem Makro sortiere ich den Inhalt des Blattes nach den Firmen, erstelle von jeder Firma ein eigenes Tabellenblatt und kopiere die zur Firma zugehörigen Daten herein. Der Code funktioniert auch, allerdings mußte ich zu meinem Entsetzen feststellen, das aus einer Mappe mit 50 KB nach dem Durchlaufen des Makros ca. 30 (!) MB geworden sind. Wer kann mir helfen den Code zu optimieren ??? Die zweite Frage ist, wie muß ein Makro aussehen, daß jeder Firma das zugehörige Tabellenblatt an einen vorher zugewiesenen Email Kontakt schickt ??
Hier der Code (auszugsweise):


Sub Oustanding_Order_Thomas()
    
    
    Application.ScreenUpdating = False
    Sheets("Sheet1").Select
    ActiveWindow.ScrollColumn = 1
    Selection.AutoFilter Field:=1, Criteria1:="Firma1"
    Sheets.Add
    '***********************Blatt hinzufügen*******************************************
    Sheets("Tabelle1").Select
    Sheets("Tabelle1").Move After:=Sheets(2)
    ActiveWindow.TabRatio = 0.392
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    '************************Blatteinstellungen*****************************************
    Sheets("Tabelle1").Select
    Sheets("Tabelle1").Name = "Firma1"
    Sheets("Sheet1").Select
    Range("A:A,F:G").Select
    Range("F1").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Firma1").Select
    Range("B1").Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Columns("J:J").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Firma1").Select
    Range("E1").Select
    ActiveSheet.Paste
    Range("G2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(C[-2])"
    Range("G2").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Font
        .Name = "Arial"
        .Size = 12
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 1
    End With
    Selection.Font.Bold = True
    Selection.Font.ColorIndex = 3
    Sheets("Sheet1").Select
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.TabRatio = 0.958
    Selection.AutoFilter Field:=1
    Range("A1").Select
        
    Application.ScreenUpdating = True
    (selbe Code für Firma 2-10)
    ...
End Sub

     Code eingefügt mit Syntaxhighlighter 2.4

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code blählt Arbeitsmappe auf ??? Hilfe !
28.01.2004 17:16:22
andre
hallo thomas,
habe deine code mal etwas gekürzt - die kommentare und auskommentierten codeteile kannst du wegnehmen. ist allerdings noch keine antwort auf deine frage. dafür würde ich z.b beim copy nur die werte übernehmen - weil formate eine ursache sein können

Sub Oustanding_Order_Thomas()
Application.ScreenUpdating = False
Sheets("Sheet1").Activate
ActiveWindow.ScrollColumn = 1
ActiveSheet.Cells.AutoFilter Field:=1, Criteria1:="Firma1"
Sheets.Add
'***********************Blatt hinzufügen*******************************************
' das geht doch nicht oder?
'Sheets("Tabelle1").Move After:=Sheets(2)
ActiveSheet.Move After:=Sheets(2)
ActiveWindow.TabRatio = 0.392
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
'************************Blatteinstellungen*****************************************
'Sheets("Tabelle1").Name = "Firma1"
'geht auch schleife - for firma=1 to 20
firma = 7
ActiveSheet.Name = "Firma" & firma
Sheets("Sheet1").Activate
Range("A:A,F:G").Copy Destination:=Sheets("Firma" & firma).Range("B1")
' hier geht auch range statt columns
Columns("J:J").Copy Destination:=Sheets("Firma" & firma).Range("E1")
'alternative copymethode - beispiel für werte - hier aber nicht anwenden, weil dabei autofilter nicht berücksichtigt wird:
'    Sheets("Firma" & firma).Range("E:E").Value = Sheets("Sheet1").Range("J:J").Value
Sheets("Firma" & firma).Activate
Range("G2").FormulaR1C1 = "=SUM(C[-2])"
With Range("G2")
'bitte prüfen, es werden nicht alle einstellungen benötigt !!
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
'       .WrapText = False
'       .Orientation = 0
'       .AddIndent = False
'       .IndentLevel = 0
'       .ShrinkToFit = False
.ReadingOrder = xlContext
'        .MergeCells = False
End With
With Range("G2").Font
.Name = "Arial"
.Size = 12
'        .Strikethrough = False
'        .Superscript = False
'        .Subscript = False
'        .OutlineFont = False
'        .Shadow = False
'        .Underline = xlUnderlineStyleNone
'        .ColorIndex = 1
.ColorIndex = 3
.Bold = True
End With
'   das gehört in den with-bereich !!!
'    Selection.Font.Bold = True
'    Selection.Font.ColorIndex = 3
Sheets("Sheet1").Activate
ActiveWindow.ScrollColumn = 1
ActiveWindow.TabRatio = 0.958
[G2].AutoFilter Field:=1
Range("A1").Activate
' hier next bei schleife
Application.ScreenUpdating = True
End Sub


gruss andre
Anzeige
AW: Code blählt Arbeitsmappe auf ??? Hilfe !
29.01.2004 09:31:28
Lars
Hallo Andre,
danke, habe zumindest meinen Code um einiges verkürzen können und wieder etwas dazugelernt ;)
Vielleicht liegt es wirklich an der Formatierung, da bin ich noch am Testen.
Danke trotzdem !
Lars

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige