Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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
Inhaltsverzeichnis

Makro verkleinern ?

Makro verkleinern ?
Odje.K
Hallo Leute!
Kann man das folgende Makro noch irgendwie aufkürzen?
Habe es mit dem Makrorekorder erstellt.
  • Option Explicit
    Private Sub ZahlenTransponieren()
    Application.ScreenUpdating = False
    Range("A13") = 1
    Range("A14") = 2
    Range("A13:A14").AutoFill Destination:=Range("A13:A50"), Type:=xlFillDefault
    Range("A1:A3").NumberFormat = "00"
    '   Lfd.Nr.01-38
    Range("A1:G1").Copy
    Range("B13").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A2:G2").Copy
    Range("B20").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A3:G3").Copy
    Range("B27").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A4:G4").Copy
    Range("B34").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A5:G5").Copy
    Range("B41").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A6:C6").Copy
    Range("B48").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("D13") = 39
    Range("D14") = 40
    Range("D13:D14").AutoFill Destination:=Range("D13:D50"), Type:=xlFillDefault
    Range("A1:A3").NumberFormat = "00"
    'Lfd.Nr.39-76
    Range("D6:G6").Copy
    Range("E13").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A7:G7").Copy
    Range("E17").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A8:G8").Copy
    Range("E24").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A9:G9").Copy
    Range("E31").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A10:G10").Select
    Range("E38").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Range("A11:F11").Copy
    Range("E45").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Application.CutCopyMode = False
    Range("A1").Select
    Application.ScreenUpdating = True
    End Sub
    

  • Einstweilen herzlichen Dank an alle, die sich für mich bemühen.
    MfG
    Odje

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Benutzer
    Anzeige
    AW: Makro verkleinern ?
    27.07.2009 11:20:25
    Matthias5
    Hallo Odje,
    teste es doch mal so:
    Private Sub ZahlenTransponieren_neu()
    Dim i As Byte
    Application.ScreenUpdating = False
    Range("A13") = 1
    Range("A13:A50").DataSeries Step:=1
    Range("D13") = 39
    Range("D13:D50").DataSeries Step:=1
    Range("A1:A3").NumberFormat = "00"
    For i = 1 To 11
    Range("A" & i).Resize(, 7).Copy
    If i > 6 Then
    Range("E" & (i - 6) * 7 + 6).PasteSpecial Transpose:=True
    Else
    Range("B" & i * 7 + 6).PasteSpecial Transpose:=True
    End If
    Next i
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    End Sub
    
    Gruß,
    Matthias
    Anzeige
    AW: Makro verkleinern ?
    27.07.2009 13:19:55
    Odje.K
    Hallo Matthias,
    bin total erstaunt wie du das Ding so geschrumpf hast.
    Leider ist da noch ein kleiner Haken drin.
    In der ersten Zahlenkolonne 1 - 38 werden 4 Zahlen zuviel kopiert, er sind praktisch die 4 Anfangszahlen
    der Zahlenkolonne 39 - 76.
    Kannst du da noch einmal nach schauen, ob der Fehler, wenn möglich noch ausgeräumt werden kann?
    Schöne Grüße
    Odje
    AW: Makro verkleinern ?
    27.07.2009 13:41:52
    Matthias5
    Hallo nochmal,
    dann teste doch mal so:
    Private Sub ZahlenTransponieren_neu()
    Dim i As Byte
    Application.ScreenUpdating = False
    Range("A13") = 1
    Range("A13:A50").DataSeries Step:=1
    Range("D13") = 39
    Range("D13:D50").DataSeries Step:=1
    Range("A1:A3").NumberFormat = "00"
    For i = 1 To 11
    Range("A" & i).Resize(, IIf(i = 6, 3, 7)).Copy
    If i > 6 Then
    Range("E" & (i - 6) * 7 + 9).PasteSpecial Transpose:=True
    Else
    Range("B" & i * 7 + 6).PasteSpecial Transpose:=True
    End If
    Range("D6:G6").Copy
    Range("E13").PasteSpecial Transpose:=True
    Next i
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    End Sub
    
    Gruß,
    Matthias
    Anzeige
    AW: Makro verkleinern ?
    27.07.2009 14:11:20
    Odje.K
    Hallo Matthias,
    ich habe es getestet und es funktioniert einwandfrei.
    Was soll ich sagen... Einfach nur toll... Genau so hab ich’s mir vorgestellt.
    Nochmals Danke für deine Hilfe.
    Gruß
    Odje
    Alternative
    27.07.2009 16:17:06
    Rudi
    Hallo,
    so geht's auch:
    Sub tt()
    Dim i As Integer
    Application.ScreenUpdating = False
    For i = 1 To 38
    Cells(i + 12, 1) = i
    Cells(i + 12, 2) = Range("A1:G11").Cells(i)
    Cells(i + 12, 4) = i + 38
    Cells(i + 12, 5) = Range("A1:G11").Cells(i + 38)
    Next
    Application.ScreenUpdating = True
    End Sub
    

    Gruß
    Rudi
    AW: Alternative
    27.07.2009 16:32:26
    Odje.K
    Hallo Rudi,
    wow, ist kaum zufassen, den Code von Matthias nochmal zu toppen.
    Einfach cool !!!!!!!!!
    Auch dir für deine Mühe mein Besten Dank.
    Schöne Grüße
    Odje
    Anzeige
    AW: Noch kürzer
    27.07.2009 22:04:16
    Daniel
    Hi
    obs jetzt wirklich kürzer ist als Rudis Lösung müsste man mal auszählen, aber auf jeden Fall hats weniger Zeilen:
    Sub umformen()
    Range("A13:A50,D13:D50").FormulaR1C1 = "=Row()-12+38*Rounddown(Column()/3,0)"
    Range("B13:B50,E13:E50").FormulaR1C1 = "=INDEX(R1C1:R11C7,ROUNDUP(RC[-1]/7,0),MOD(RC[-1]-1,7)+1) _
    Range("A13:E50").Formula = Range("A13:E50").Value
    End Sub
    
    Gruß, Daniel
    AW: Noch kürzer
    28.07.2009 11:25:51
    Odje.K
    Hallo Daniel,
    auch für deine Hilfe herzlichen Dank, ich habe das Makro getestet und es funktioniert einwandfrei.
    Da ich kein so großer VBAer bin, habe ich mich für Rudis Vorschlag entschieden.
    Begründung: Der Code ist für mich nachvollziehbar.
    Schöne Grüße
    Odje
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige