Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1428to1432
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

Hilfe Wartungsplaner - Makro ohne select

Hilfe Wartungsplaner - Makro ohne select
13.06.2015 17:33:51
Dhammaserver

Hallo liebes Forum,
mein erster Beitrag. :-)
Arbeite gerade eherenamtlich für einen gemeinnützigen Verein an einem kleinen Wartungsplaner und benötige etwas professionelle Hilfe beim Erstellen einiger Filter bzw. Makros.
Habe z.B. den Beitrag gelesen, dass man in VBA die "select" Funktion meiden sollte, aber genau da hört´s leider bei mir mit meinem Grundkenntnissen auf.
Hier mal ein Beispiel eines kleinen Makros, welches mir zuvor gefilterte Daten von einem Tabellenblatt in ein anderes kopiert. Beim Auslösen flackert der ganze Bildschirm. Wie kann man dies z.B. ohne select umsetzen?
Danke schon mal vorab für die Hilfe
Dhammaserver

  • 
    Sub Wartungsprotokoll_erstellen()
    ' Wartungsprotokoll_erstellen Makro
    ' kopiere Daten aus Wartungsplaner
    Sheets("Wartungsplaner").Select
    Range("A13:E13").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    ' paste Daten in Wartungsprotokoll
    Sheets("Wartungsprotokoll").Select
    Range("A7").Select
    ActiveSheet.Paste
    Range("F7").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Helfer/-in"
    Range("G7").Select
    ActiveCell.FormulaR1C1 = "Datum"
    Range("H7").Select
    ActiveCell.FormulaR1C1 = "Wartungsstatus"
    ' Tabelle in Wartungsprotokoll formatieren
    Range("A7").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearFormats
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$7:$H$400"), , xlYes).Name = _
    "Tabelle6"
    Range("A7:H400").Select
    ActiveSheet.ListObjects("Tabelle6").TableStyle = "TableStyleMedium9"
    ActiveSheet.ListObjects("Tabelle6").Unlist
    ' Zeilenumbruch Spalte E - Wartungsbeschreibung
    Columns("E:E").Select
    With Selection
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    End Sub
    

  • 20
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Hilfe Wartungsplaner - Makro ohne select
    13.06.2015 17:47:35
    Hajo_Zi
    einige Sachen sind mir nicht klar, was wohl daran liegt das ich die Datei nicht sehe, die Sachen wolltest Du ja selber anpassen.
    Option Explicit
    Sub Wartungsprotokoll_erstellen()
    ' Wartungsprotokoll_erstellen Makro
    Dim Loletzte As Long
    With Sheets("Wartungsplaner")
    Loletzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Range("A13:E" & Loletzte).Copy Sheets("Wartungsprotokoll").Range("A7")
    End With
    With Sheets("Wartungsprotokoll")
    .Range("A7") = "Helfer/-in"
    .Range("G7") = "Datum"
    .Range("H7") = "Wartungsstatus"
    Loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
    Count)
    .Range("A7:A" & Loletzte).ClearFormats
    .ListObjects.Add(xlSrcRange, Range("$A$7:$H$400"), , xlYes).Name = _
    "Tabelle6"
    .Range("A7:H400").ListObjects("Tabelle6").TableStyle = "TableStyleMedium9"
    .ListObjects("Tabelle6").Unlist
    With .Columns("E:E")
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    End With
    End Sub
    


    Anzeige
    AW: Hilfe Wartungsplaner - Makro ohne select
    13.06.2015 17:54:14
    Daniel
    Hi
    in etwa so:
    Sub Wartungsprotokoll_erstellen()
    ' Wartungsprotokoll_erstellen Makro
    ' kopiere Daten aus Wartungsplaner
    With Sheets("Wartungsplaner").Range("A13:E13")
    Range(.Cells, .Cells.End(xlDown)).SpecialCells(xlCellTypeVisible).Copy
    End With
    ' paste Daten in Wartungsprotokoll
    With Sheets("Wartungsprotokoll")
    .Range("A7").PasteSpecial xlPasteAll
    Application.CutCopyMode = False
    .Range("F7").FormulaR1C1 = "Helfer/-in"
    .Range("G7").FormulaR1C1 = "Datum"
    .Range("H7").FormulaR1C1 = "Wartungsstatus"
    ' Tabelle in Wartungsprotokoll formatieren
    With .Range("A7")
    With Range(.Cells, .End(xlToRight))
    Range(.Cells, .End(xlDown)).ClearFormats
    End With
    End With
    .ListObjects.Add(xlSrcRange, .Range("$A$7:$H$400"), , xlYes).Name = "Tabelle6"
    .ListObjects("Tabelle6").TableStyle = "TableStyleMedium9"
    .ListObjects("Tabelle6").Unlist
    ' Zeilenumbruch Spalte E - Wartungsbeschreibung
    With .Columns("E:E")
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    End With
    End Sub
    
    Gruß Daniel

    Anzeige
    Zusätzlich...
    13.06.2015 18:26:58
    Alexander
    Hallo,
    ... zu den Vorschlägen von Hajo und Daniel kannst du die aktualisierte Ansicht der Tabelle erst am Ende des Codes anzeigen lassen.
    Gerade bei einem größerem Umfang spart das Zeit.
    Dazu:
    Application.ScreenUpdating = False
    Dein Code
    Application.ScreenUpdating = True
    Gruß
    Alex

    Zusätzlicher Hinweis ...
    13.06.2015 18:47:07
    Matthias L
    Hi
    Application.ScreenUpdating = True am Ende ist "eigentlich" nicht mehr nötig.
    Wird von Excel automatisch auf True gesetzt.
    Gruß Matthias

    AW: Zusätzlicher Hinweis ...
    13.06.2015 18:51:06
    Daniel
    wenn ScreenUpdating = False den Code noch stark beschleunigt, dann hat der Code noch verbesserungspotential.
    Man muss sich halt abgewöhnen, den Code hauptsächlich mit dem Recorder zu erstellen, sondern den Code selber zu schreiben und den Recorder nur noch wie ein Wörterbuch zum "nachschlagen" unbekannter Befehle zu verwenden.
    Gruß Daniel

    Anzeige
    der Tauchsieder labert wieder ... owT
    13.06.2015 18:55:27
    Matthias L

    AW: Zusätzlicher Hinweis ...
    13.06.2015 19:29:43
    Alexander
    Hallo Daniel,
    Ich denke es kommt nicht immer auf den Code an.
    Wenn ein paar tausend Datensätze in der Tabelle geändert werden müssen ist da recht intensiv,
    da macht das ScreenUpdating sinn.
    Gruß
    Alex

    AW: Zusätzlicher Hinweis ...
    13.06.2015 20:19:45
    Daniel
    Hi
    es kommt halt darauf an, wie man diese Änderungen durchführt.
    und wie gesagt, wenns mit Application.ScreenUpdating deutlich schneller wird, dann gibts wahrscheinlich auch eine andere Möglichkeit, die ohne ScreenUpdating mindestens genauso schnell ist.
    Gruß Daniel

    AW: Zusätzlicher Hinweis ...
    13.06.2015 18:51:35
    Alexander
    Hallo Matthias,
    das war mir noch nicht bekannt, danke für den Hinweis
    Gruß
    Alex

    Anzeige
    @Matthias-die Hilfe sagt was anderes........
    13.06.2015 19:57:26
    robert
    Denken Sie daran, die Eigenschaft ScreenUpdating wieder auf True festzulegen, wenn Ihr Makro beendet wird.
    Na was nun ;-)
    Gruß
    robert

    AW: @Matthias-die Hilfe sagt was anderes........
    13.06.2015 20:28:26
    Dhammaserver
    Hallo alle,
    erst einmal vielen herzlichen Dank für die schnellen und hilfreichen Tipps. Bin schon seit einigen Wochen als Leser im Forum und sehe...hier werden Sie geholfen! ;-)
    Der Wartungsplaner ist vom Konzept her soweit eigentlich fertig. Es fehlt eben nur noch das Feintuning. Habe vorhin auch kurz mit Hajo telefoniert, von dem ich auch viele wertvolle Beiträge gelesen habe. Leider hat er momentan keine Zeit, betont aber wie wichtig es ist, dass gleich von Anfang an alles richtig eingestellt sein sollte.
    Würde sich denn jemand von euch (ggf. auch als Dienstleister) bereit erklären und mal über den Wartungsplaner schauen? Ich mach das wie gesagt ehrenamtlich, investiere aber gerne ein paar Stunden aus eigener Tasche, damit es später auch richtig funktioniert.
    Freue mich über Rückmeldung...
    Viele Grüße
    Smedo

    Anzeige
    AW: @Matthias-die Hilfe sagt was anderes........
    13.06.2015 20:45:14
    Dhammaserver
    @Daniel
    Super, vielen Dank! Dein Code hat funktioniert. Flackert nix mehr und geht auch schneller. Bekommt man es evtl. noch so hin, dass er nach der Übertragung dann auch das Ergebnis direkt anzeigt? Er bleibt beim Auslösen des Makros in der ersten Tabelle stehen.

    AW: @Matthias-die Hilfe sagt was anderes........
    13.06.2015 20:52:20
    Daniel
    Hi
    du kannst ja am Schluss des Makros 1x die Tabelle aktivieren, die dann angezeigt werden soll.
    Gruß Daniel

    AW: @Matthias-die Hilfe sagt was anderes........
    13.06.2015 20:59:05
    Dhammaserver
    Ok danke für die Info, ich versuch´s mal.
    Hab den Wartungsplaner mal zur Ansicht hochgeladen. Was mir ebenfalls nicht so richtig gelingen mag ist das ganze später "Usersicher" zu machen, damit meine ich das Formeln und diverse Schalter vor dem versehentlichen löschen oder verschieben geschützt sind.
    https://www.herber.de/bbs/user/98177.xlsm

    Anzeige
    Zusätzlicher Hinweis ...Nachfrage
    13.06.2015 21:04:30
    Matze Matthias
    Hi Matti,
    betrifft das auch ältere Excel Versionen oder ist dem so das dies erst ab 2007 funktioniert.
    hab kein 2003 um dies zu testen,
    Gruß Matze

    AW: Zusätzlicher Hinweis ...Nachfrage
    13.06.2015 21:36:05
    Dhammaserver
    Hallo Daniel,
    sorry, aber ich bekomm es leider nicht hin. :-/
    Kannst du mir kurz sagen, welchen Befehl ich wo einfügen muss, damit er mir die Tabelle "Wartungsprotokoll" anzeigt.
    Danke und Gruß
    Smedo

    AW: Zusätzlicher Hinweis ...Nachfrage
    13.06.2015 21:46:47
    Dhammaserver
    Hab´s hinbekommen :-)

    AW: Zusätzlicher Hinweis ...Nachfrage
    14.06.2015 00:14:22
    Daniel
    hätte mich auch schwer gewundert, so einfach wie das ist.
    Gruss Daniel

    AW: Zusätzlicher Hinweis ...Nachfrage
    14.06.2015 10:59:51
    Dhammaserver
    Ja sorry, hatte einen Denkfehler... muss mich aber jetzt mal richtig in das Thema Makro und VBA einarbeiten. Bin noch ein absolutes Greenhorn und alles Neuland mit dem ich mich erst seit paar Wochen beschäftige. Macht aber Spaß, vor allem wenn´s dann auch klappt... ;-)
    Danke nochmal für die schnelle Hilfe.
    Viele Grüße
    Smed

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige