Microsoft Excel

Herbers Excel/VBA-Archiv

Makro für mehrere Arbeitsschritte

Betrifft: Makro für mehrere Arbeitsschritte von: Peter Möller
Geschrieben am: 29.07.2014 10:12:48

Hallo,

ist es möglich, bzw. kann mir jemand helfen, ein Makro für die folgenden, immer wieder gleichen, Arbeitsschritte zu erstellen, die ich an einer Excel-Tabelle bisher manuell ausführen muss:

1. Autofilter in Zeile 1 aktivieren
2. Oberste Zeile einfrieren
3. Die letzte Zelle in Spalte A ermitteln, die einen Wert enthält ("unten")
4. Die Zellen A2 bis A"unten" markieren und Inhalt in eine Zahl umwandeln
5. Alle leeren Zellen im Bereich F2 bis F"unten" und H2 bis H"unten" mit den
Buchstaben "ST" füllen
6. In allen Zellen der Bereiche G2 bis G"unten" und I2 bis I"unten"
die Zahl "0" durch die Zahl "1" ersetzen
7. Speichern

Vielen Dank für Eure Unterstützung!
PeMoe

  

Betrifft: AW: Makro für mehrere Arbeitsschritte von: EtoPHG
Geschrieben am: 29.07.2014 11:45:07

Hallo PeMoe,

Klar kann man helfen, aber vielleicht solltest du zuerstmal selber versuchen Hand an deine Datei zu legen, denn wir sehen die ja nicht!

1. Alle Arbeitschritte mit dem Makro-Rekorder aufzeichen.
2. Den Code lesen, verstehen und gemäss diesem Artikel überarbeiten.
3. Sind dann immer noch Fragen offen oder Fehler vorhanden, nochmal nachfragen mit Angaben wo/wie/was für Fehler auftauche. Mit dem überarbeiteten Code oder noch besser mit einer Beispielmappe.

Gruess Hansueli


  

Betrifft: AW: Makro für mehrere Arbeitsschritte von: Peter Möller
Geschrieben am: 29.07.2014 15:30:17

Hallo,
danke für den Denkanstoß. Ich bin bisher schon bei der Textzahlenumwandlung gescheitert und hatte somit am Anfang aufgegeben...

Mit diesem Code scheint mein Problem gelöst:

Sub AME_BME()

' Autofilter aktivieren

Range("A1").Select
    Selection.AutoFilter


'Oberste Zeile einfrieren

    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True


' Textzahlen in Spalte A umwandeln in Zahlen

 Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Columns("A:A").NumberFormat = "General"


' AME "ST" einfügen

    Columns("F:F").Select
    Selection.Replace What:="", Replacement:="ST", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False


' BME "ST" einfügen

    Columns("H:H").Select
    Selection.Replace What:="", Replacement:="ST", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        
' UmrFaktor AME "1" einfügen

    ActiveSheet.Range("$A$1:$K$843").AutoFilter Field:=7, Criteria1:="0,00000"
    Columns("G:G").Select
    Selection.Replace What:="0", Replacement:="1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    ActiveSheet.Range("$A$1:$K$843").AutoFilter Field:=7
        
        
' UmrFaktor BME "1" einfügen

    ActiveSheet.Range("$A$1:$K$843").AutoFilter Field:=9, Criteria1:="0,00000"
    Columns("G:G").Select
    Columns("I:I").Select
    Selection.Replace What:="0", Replacement:="1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A1").Select
    ActiveSheet.Range("$A$1:$K$843").AutoFilter Field:=9
        
        
' Speichern und Schließen

    ActiveWorkbook.Save
    ActiveWindow.Close
   
End Sub
Vielleicht geht es noch eleganter, aber für das erste Mal bin ich ganz zufrieden!

Gruß
PeMoe


  

Betrifft: Eleganter wäre OHNE Select (s. Link) (owT) von: EtoPHG
Geschrieben am: 29.07.2014 15:48:04




  

Betrifft: AW: Makro für mehrere Arbeitsschritte von: Rudi Maintaire
Geschrieben am: 29.07.2014 16:12:25

Hallo,
ohne Select:

Sub AME_BME()
  Application.ScreenUpdating = False
  ' Autofilter aktivieren
  
  Range("A1").AutoFilter
  
  'Oberste Zeile einfrieren
  Range("A2").Select
  ActiveWindow.FreezePanes = True
  
  ' Textzahlen in Spalte A umwandeln in Zahlen
  Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
  Columns("A:A").NumberFormat = "General"
  
  ' AME "ST" einfügen
  Columns("F:F").Replace What:="", Replacement:="ST", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
  
  ' BME "ST" einfügen
  Columns("H:H").Replace What:="", Replacement:="ST", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
  
  ' UmrFaktor AME "1" einfügen
  ActiveSheet.Range("$A:$K").AutoFilter Field:=7, Criteria1:="0,00000"
  Columns("G:G").Replace What:="0", Replacement:="1", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
  ActiveSheet.ShowAllData
  
  ' UmrFaktor BME "1" einfügen
  ActiveSheet.Range("$A:$K").AutoFilter Field:=9, Criteria1:="0,00000"
  Columns("I:I").Replace What:="0", Replacement:="1", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
  Range("A1").Select
  ActiveSheet.ShowAllData
  
  ' Speichern und Schließen
  ActiveWindow.Close True
End Sub

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Makro für mehrere Arbeitsschritte"