Office: Makro dass ein Makro ausführt wenn..

Helfe beim Thema Makro dass ein Makro ausführt wenn.. in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen Ich habe ein Problem, dass mich seit Wochen beschäftigt. Es ist aber etwas kompliziert zu erklären: Ich bin dabei für unsere Fahrrad... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von JueggeG, 22. September 2022.

  1. JueggeG
    JueggeG Neuer User

    Makro dass ein Makro ausführt wenn..


    Hallo zusammen
    Ich habe ein Problem, dass mich seit Wochen beschäftigt. Es ist aber etwas kompliziert zu erklären: Ich bin dabei für unsere Fahrrad Abteilung ein Programm zu entwickeln das den Ablauf bei Kunden regelt. Ein teil ist die Preisliste. Hier habe ich auf der linken Seite die Arbeit mit dem Preis. daneben den Button "einfügen" das hinterlegte Makro kopiert diese Zeilen und fügt es in die Spalten daneben ein wobei dann daneben ein Button erscheint "löschen" falls es doch die falsche Position war. Dieser Button hat ein Makro hinterlegt das den Text und Betrag in dieser Spalte wieder löscht und beim Button die Farbe von Rot auf Weiss wechselt (so das der Button nicht mehr zu sehen ist. Die Preisliste ist übrigens sehr lang! Wenn der Verkäufer alle Arbeiten oder Material angeklickt hat die gemacht werden müssen, drückt er den Button "Einfügen in Auftrag". Dieses Makro ist das Problem: Es kopiert alle Zeilen, fügt es im nächsten Karteiblatt "Annahme Formular" ein und löscht gleich alle leeren Zeilen, löscht im Karteiblatt Preisliste alle Einträge, -und jetzt das Problem, macht alle "löschen Button wieder auf weiss damit sie nicht sichtbar sind. Da es ca. 150 Button sind dauert das eine Ewigkeit! Da ich ja nicht weiss welche Button zu wechseln sind muss ich bei allen die Farbe wechseln. Hier bräuchte ich ein VBA Code der macht das nur diese Button auf weiss wechselt die auch einen Text in der Spalte haben. Gibt's da eine Lösung? Ich hoffe ihr versteht was ich meine..
    Hier mein Makro
    Code:
    Sub EinfügenAuftrag()
    '
    ' EinfügenAuftrag Makro
    '
    '
    Range("B5:B16").Select
    Selection.Copy
    Sheets("Annahme Formular").Select
    Range("B4:B14").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("Preisliste Arbeiten").Select
    Range("F7:F16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Annahme Formular").Select
    Range("D5:D14").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("Preisliste Arbeiten").Select
    Range("E19:G201").Select
    Selection.Copy
    Sheets("Annahme Formular").Select
    Rows("17:17").Select
    Selection.Insert Shift:=xlDown
    Sheets("Preisliste Arbeiten").Select
    Range("I19:I201").Select
    Range("I201").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Annahme Formular").Select
    Range("D17").Select
    ActiveSheet.Paste
    Sheets("Preisliste Arbeiten").Select
    ActiveWindow.SmallScroll Down:=180
    Range("E207:G227").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Annahme Formular").Select
    ActiveWindow.SmallScroll Down:=157
    Rows("202:202").Select
    Selection.Insert Shift:=xlDown
    Sheets("Preisliste Arbeiten").Select
    Range("I207:I227").Select
    Range("I227").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Annahme Formular").Select
    Range("D202").Select
    ActiveSheet.Paste
    Sheets("Preisliste Arbeiten").Select
    ActiveWindow.SmallScroll Down:=11
    Range("I226").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("F227").Select
    Sheets("Annahme Formular").Select
    ActiveWindow.SmallScroll Down:=-60
    Dim i As Long
    For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete
    Next i
    Sheets("Preisliste Arbeiten").Select
    Application.Run "'Programm Prozess Makro.xlsm'!AchzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremsbelErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullsiebenLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnulleinsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullzweiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnulldreiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullsiebenLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnulleinsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullzweiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnulldreiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullsiebenLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnelfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnzwölfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehndreizehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnvierzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnfünfzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnsechzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnsiebzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreizehnachzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!VierzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!FünfzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SechzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwölfnulldreiKapLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SiebzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!AchzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!NeunzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!EinundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZweiundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreiundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!VierundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!fünfundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SechsundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SiebenundzwanzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullnullLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignulleinsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullzweiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignulldreiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullsiebenLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissignullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigelfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigzwölfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigdreizehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigvierzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigfünfzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigsechzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigsiebzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigachtzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigneunzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DreissigzwahnzigLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveSechnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveSechnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!WechNabEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!WechsErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!UmwerfEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!UmwerfErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SchaltkErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SchaltkHüllErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SchaltheReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SchaltheEinAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DrehgErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!NabenschRepLö"
    Application.Run "'Programm Prozess Makro.xlsm'!NabengeAustLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveSiebenzwölfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveSiebendreizehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!FahrReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KomplReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KleinmReinmLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveAchtnullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveAchntnullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremsEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremsklErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremsbelErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremskabErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremskabHüllErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremsEinAusLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydraulEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydrBremsErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydraulEntlLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydraulEinAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!BremschErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveNeunzwölfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveNeundreizehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnulleinsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullzweiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnulldreiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullsiebenLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ZehnnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveZehnelfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnulleinsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullzweiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnulldreiLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullvierLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ElfnullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!CheckUpLöschen"
    Application.Run "'Programm Prozess Makro.xlsm'!ServiceLösch"
    Application.Run "'Programm Prozess Makro.xlsm'!CheckUpReserveLösch"
    Application.Run "'Programm Prozess Makro.xlsm'!ServiceReservLösch"
    Application.Run "'Programm Prozess Makro.xlsm'!LenkergMontLö"
    Application.Run "'Programm Prozess Makro.xlsm'!LenkerbMontLö"
    Application.Run "'Programm Prozess Makro.xlsm'!LenkErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!LenkKüLö"
    Application.Run "'Programm Prozess Makro.xlsm'!VorbErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!VorbJustLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SteuerlEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SteuerlErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!SteuerlReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!GabelAusLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydrServKleinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HydrServGrossLö"
    Application.Run "'Programm Prozess Makro.xlsm'!GabelEinschLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveDreivierzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveDreifünfzehnLö"
    Application.Run "'Programm Prozess Makro.xlsm'!HinterbErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DämpfAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DämpfServKleinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!DämpfServGrossLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveViernullfünfLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveViernullsechsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KetteMontLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KetteSchmLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KetteReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KasseErsLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KasseReinLö"
    Application.Run "'Programm Prozess Makro.xlsm'!RitzAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KassetFreiAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveFünfnullachtLö"
    Application.Run "'Programm Prozess Makro.xlsm'!ReserveFünfnullneunLö"
    Application.Run "'Programm Prozess Makro.xlsm'!TretlAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!TretPreAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!TretlEinstLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KurbelBefLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KurbelAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!KettenblAusbLö"
    Application.Run "'Programm Prozess Makro.xlsm'!PedalAusbLö"
    Range("B5:B16").Select
    Selection.ClearContents
    Range("F7:F16").Select
    Selection.ClearContents
    Sheets("Annahme Formular").Select
    Range("B4").Select
    End Sub
     
  2. {Boris} hat Ahnung
    Hi,

    ich glaube, hier noch eine Not-OP durchzuführen, wäre nicht gut. Stattdessen besser bei Null anfangen.
    Ich bin davon überzeugt, dass Du Dich mit Deiner bisherigen Code-Struktur vollkommen verrannt hast (sicher unwissentlich, aber halt verrannt). Zeig doch mal eine Beispieldatei, woraus hervorgeht, was die einzelnen Makros so machen sollen (2-3 Beispiele dafür reichen vollkommen aus).
    Z.B. bin ich davon überzeugt, dass Du nicht weißt, wie man einem Makro einzelne Argumente mit auf den Weg gibt - da reicht dann ein einziges Makro aus.
     
    1 Person gefällt das.
  3. JueggeG
    JueggeG Neuer User
    Hi Boris
    Hier ein paar Beispiele: (Es ist immer der Button Einfügen und der Button Löschen) Habe schon überlegt mit der Filterfunktion etwas zu machen fürs Kopieren, Einfügen und löschen aber geht auch nicht..

    Code:
    Sub CheckUp()
    '
    ' CheckUp Makro
    '
    
    '
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1403")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
            .Solid
        End With
        Range("A19:C19").Select
        Selection.Copy
        Range("E19:G19").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Paste
        Range("I19").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-4]"
        Range("I20").Select
        Range("K19").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-4]=0,""1"",""2"")"
        Range("K20").Select
        
    End Sub
    Sub CheckUpLöschen()
    '
    ' CheckUpLöschen Makro
    '
    
    '
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1403")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
        End With
        Range("E19:G19").Select
        Selection.ClearContents
        Range("I19").Select
        Selection.ClearContents
        Range("D19").Select
        
    End Sub
    
    Code:
    Sub Dreissigfünfzehn()
    '
    ' Dreissigfünfzehn Makro
    '
    
    '
        Range("A222:C222").Select
        Selection.Copy
        Range("E222:G222").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1114")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
            .Solid
        End With
        Range("I222").Select
        Application.CutCopyMode = False
        Selection.ClearContents
    End Sub
    Sub DreissigfünfzehnLö()
    '
    ' DreissigfünfzehnLö Makro
    '
    
    '
        Range("I222").Select
        Selection.ClearContents
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1114")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
        End With
        Range("G222").Select
        Selection.ClearContents
        Range("F222").Select
        Selection.ClearContents
        Range("E222").Select
        Selection.ClearContents
    End Sub
     
  4. JueggeG
    JueggeG Neuer User

    Makro dass ein Makro ausführt wenn..

    Besser wäre wahrscheinlich eine Alternative zu den Button mit Makro..?
     
  5. {Boris} hat Ahnung
    Hi,

    besser wäre, wenn Du mal ne kleine Beispieldatei hochlädst. Ich stell mir auch die Frage, weshalb Du Shapes verwendest - das verkompliziert doch alles nur (sieht wahrscheinlich hübsch aus, ist aber aufwändiger zu händeln).
     
  6. JueggeG
    JueggeG Neuer User
    Ich könnte die ganze Datei hochladen da alles zusammenhängt..? Ich muss vielleicht noch erklären das alles sehr einfach zu bedienen sein muss. Wir sind eine Stiftung für Arbeitsintegration und ich hatte den Auftrag, eine Tool zu entwickeln das den Ablauf für Reparaturannahmen regelt und für jeden einfach zu bedienen ist, da wir Teilnehmer haben die nur sehr geringe Konzentrations- und Leistungsfähigkeit haben.. deswegen die Entscheidung mit den Shapes.
     
  7. Exl121150 Erfahrener User
    Hallo,
    mit dem Makrorekorder ??

    Der Makrorekorder ist ein ausgezeichnetes Tool in 2 Situationen:
    1) Für Leute, die ein paar Ablaufschritte speichern möchten, ohne eine/viel Ahnung zu haben von VBA.
    2) Für Leute, die nicht wissen, wie ein bestimmtes Feature behandelt wird in Excel und auf die Schnelle dahinter kommen möchten, wie es funktioniert. Zu dieser Gruppe zähle ich gelegentlich.

    Der Makrorekorder ist so ziemlich ungeeignet dafür, Programmierprojekte (ausschließlich) mit ihm zu realisieren.
    Da er als Hilfsmittel gedacht ist, erzeugt er keinen optimalen Code, sondern viel Müll, insbesondere was die Verwendung von SELECT und SELECTION betrifft. Beides verlangsamt die Codeausführung ungemein, wenn es häufig (meist überflüssigerweise) enthalten ist.

    Ich habe dir den von dir übermittelten Code im Modul1 optimiert, ohne natürlich die Hintergründe zu kennen, warum der Code aussieht, wie er aussieht. Ich habe dir den Makrorekorder-Codemüll entfernt.
    Ferner habe ich gesehen, dass 159 Unterprogrammaufrufe enthalten sind, wobei ich diese umgestellt habe, so wie es sich normalerweise für Unterprogrammaufrufe in VBA gehört. Aber hier meine ich, ist aber trotz allem sicherlich noch eine größere Optimierungsmöglichkeit gegeben. Denn niemand deklariert 159 Unterprogramme (selbst in großen Projekten), man wird immer trachten, ihre Zahl zu reduzieren, indem man durch geeignete Übergabeparameter eine Vereinheitlichung anstrebt.

    Die 4 Unterprogramme, die du zusätzlich übermittelt hast, habe ich dir ins Modul "Modul2_bisher" gespeichert und habe auch die Makrorekorder-Relikte entfernt.

    Diese 4 Unterprogramme habe ich dir zusätzlich im Modul "Modul3_Geändert" nochmals dargestellt, diesmal aber mit Aufrufparameterlisten. Mit Hilfe dieser kann man die variablen Teile von Unterprogrammen in diesen Aufruflisten deponieren und kann damit eine Vereinheitlichung/Vereinfachung/Verringerung bei den Unterprogrammen erreichen.
    Da ich nicht wusste, was alles so variabel ist in diesen 4 Kostproben, habe ich einen vorläufigen Versuch in diese Richtung unternommen.
    Dadurch ändert sich der Aufruf dieser Unterprogramme im Modul1. Die beiden Stellen, die dort betroffen sind, habe ich entsprechend abgeändert. Wo die Aufrufe der beiden anderen Unterprogramme enthalten sind, musst du wissen - sie liegen nicht im übermittelten Code.
     
    Exl121150, 23. September 2022
    #7
  8. JueggeG
    JueggeG Neuer User

    Makro dass ein Makro ausführt wenn..

    Hallo Boris. Entschuldige meine späte Antwort, brauchte etwas Zeit um deine Version auszuprobieren. Erst mal ein grosses Dankeschön für deine Hilfe! Du hast recht mit meinen VBA Kenntnissen, ich hatte bis vor ein paar Monaten nur wenig Ahnung von Excel und musste mir alles mittels Googel und Videos aneignen. Ich versuche mal die Datei hochzuladen damit du siehst was das Problem ist. Ich muss irgend etwas zum anklicken machen damit der Benutzer sieht was er gewählt hat von der Preisliste..
     
  9. JueggeG
    JueggeG Neuer User
    Ich bin noch nicht fertig mit allen Funktionen. Bin noch am Ausprobieren und verbessern..
     
  10. {Boris} hat Ahnung
    Hi,

    ich hab hier bisher ja eigentlich nur Anregungen gegeben - Anton hat sich da bisher wesentlich mehr Mühe gemacht!
    Um Zeit zu sparen: Sag doch bitte mal mit Worten, was genau wann und wie in welchem Tabellenblatt durch welchen Buttonklick erledigt werden soll?
     
  11. JueggeG
    JueggeG Neuer User
    Sorry, natürlich auch herzlichen Dank an Anton! Also: erstes Tabellenblatt "Eingabemaske" füttert den Kopf der "Preisliste Arbeiten". Das funktioniert schon. Dann mein Problem: Das Shape Einfügen auf der "Preisliste Arbeiten" soll: Den Kopf kopieren und in "Annahme Formular" einfügen, alle ausgewählten Arbeiten auf der rechte Seite kopieren und in "Annahme Formular" einfügen. Arbeiten und Material separat siehe Beispiel schon eingefügt, dies ohne leere Zellen. Dann alles in "Preisliste Arbeiten" löschen und den Button löschen wieder unsichtbar machen..das Problem das es 159 Makros sind die ausgeführt werden müssen.(Löschen Text und zahlen und löschen Button wieder von rot auf weiss wechseln). Da jedes Shape eine eigene, nicht logische Nummer hat kann ich nicht einen allgemeinen Befehl schreiben um die Farbe von Rot auf weiss zu wechseln (meine Lösung damit sie wieder unsichtbar sind) Für das einfügen -und wieder löschen können wenn eine falsche Position angeklickt wurde, fand ich keine andere Lösung als mit diesen Button. Wie gesagt muss alles sehr einfach zu bedienen sein da Personen mit Einschränkungen dieses Programm bedienen werden. Vom Annahme Formular geht es dann weiter zur Rechnung aber so weit bin ich noch nicht und das wird auch einfach zu lösen sein..
     
  12. {Boris} hat Ahnung
    Hi,

    Wie gesagt muss alles sehr einfach zu bedienen sein da Personen mit Einschränkungen dieses Programm bedienen werden

    OK, kann ich nachvollziehen. Aber es gibt dennoch für mich keinen vernünftigen Grund, weshalb Du nicht mit einfachen Zellverweisen / Verweisformeln arbeiten kannst. Und wenn schon VBA, dann lass die Shapes weg und arbeite nur z.B. mit dem Doppelklick-Ereignis, das z.B. ein x erzeugt (und bei erneutem Doppelklick wieder löscht) und daraufhin die Formeln ihr Werk verrichten können. Und das "x" kann man auch mit der richtigen Schriftart z.B. als grüne Häkchen usw. anzeigen lassen, wenn man möchte.
    Insgesamt sehe ich halt viel Redundanz in Deiner Dateistruktur - das schreit förmlich nach schlichten Verweisen.
    Auch wenn das jetzt vielleicht nicht das ist, was Du gerne hören möchtest, wiederhole ich mein Eingangsstatement:

    ich glaube, hier noch eine Not-OP durchzuführen, wäre nicht gut. Stattdessen besser bei Null anfangen.

    Das wird natürlich auch erstmal ein wenig aufwändig, sollte aber ein gutes Ergebnis bringen. Vielleicht findet sich hier ja jemand, der das "aus Spaß an der Freude" macht - für mich übersteigt der Aufwand allerdings den kostenlosen Support. Wenn Du magst (bzw. wenn Du hier doch nicht weiterkommen solltest), kannst Du mich gerne über mein Profil kontaktieren.
     
  13. JueggeG
    JueggeG Neuer User

    Makro dass ein Makro ausführt wenn..

    OK, Danke für deine Meinung.. dass mit den Zellverweisen / Verweisformeln werde ich gerne mal recherchieren.. ich kenne es ein wenig aber verstehe nicht ganz wie man das so lösen kann aber ist ein guter Hinweis. Auch mit dem Doppelklick werde ich mal versuchen.. jetzt habe ich zumindest wieder einen Anhaltspunkt nach was ich recherchieren soll Makro dass ein Makro ausführt wenn.. *;)* hättest du ein Tipp nach was und wo ich suchen soll um mehr über diese Lösung zu erfahren? Auf jeden Fall danke für deine Hilfe und dein Angebot dich zu kontaktieren.
     
  14. {Boris} hat Ahnung
    Hi,

    da spielen in Deiner Datei ne Menge verschiedener Dinge eine Rolle, daher hab ich auch nicht den einen Tipp, der Dich weiterbringt. Du hast Dir mit Deinem Programm ja schon ne Menge Arbeit gemacht - und daher würde ich das auch nicht alles "über den Haufen" werfen wollen, sondern eben nur simplifizieren, was aber schon Arbeit bedeutet. Ich wünsch Dir wirklich den maximalen Erfolg! Und falls Du hängen bleiben solltest, steht mein Angebot natürlich weiterhin.
     
  15. JueggeG
    JueggeG Neuer User
    Danke dir. Werde gerne auf dein Angebot zurück kommen, wenn ich am verzweifeln bin Makro dass ein Makro ausführt wenn.. :confused:Makro dass ein Makro ausführt wenn.. *:)*
     
Thema:

Makro dass ein Makro ausführt wenn..

Die Seite wird geladen...
  1. Makro dass ein Makro ausführt wenn.. - Similar Threads - Makro Makro ausführt

  2. Drehfeld-Schaltfläche

    in Microsoft Excel Hilfe
    Drehfeld-Schaltfläche: Hallo zusammen, habe die Aufgabe eine Excel-Formel meines Chefs zu reparieren. Er hat einen Einsatzplan erstellt, in dem man anhand einer Schaltfläche die Jahre ändert und dadurch automatisch die...
  3. Hilfe benötigt bei Fehler in Makro

    in Microsoft Excel Hilfe
    Hilfe benötigt bei Fehler in Makro: Guten Tag erstmal. Direkt vorweg, Excel ist absolutes Neuland für mich. Habe jetzt nur versucht mich rein zu finden um einen Fehler zu finden, da derjenige, der die Makros vor einigen Jahren...
  4. Makro für das kopieren von Zellenbereichen

    in Microsoft Excel Hilfe
    Makro für das kopieren von Zellenbereichen: Hallo, für die Vereinfachung einer Tabelle bräuchte ich ein Makro, was ich nicht gelöst bekomme. Ausgangslage: In einem Reiter habe ich eine kleine "Datenbank" mit Werte und einer Zuordnung...
  5. VBA Makro einfügen CSV, verarbeiten und abspeichern

    in Microsoft Excel Hilfe
    VBA Makro einfügen CSV, verarbeiten und abspeichern: Hallo zusammen, erstmal vorab meine VBA Kenntnisse sind sehr rudimentär. Aufgabenstellung in Kurz: Ich hab 2 Dateien, eine Hauptdatei (IDXXXX_8x8_GV-contrast.xlsm) und eine CSV die...
  6. Makros nach wenn dann prüfen und durchführen

    in Microsoft Excel Hilfe
    Makros nach wenn dann prüfen und durchführen: Ich arbeite zurzeit an einer Übersichtstabelle, aus der ich Informationen aus verschiedene Excelformulare entnehme. Da aber es ziemlich zeitaufwendig ist, jede einzelne Angabe manuell auf die...
  7. Makro zur Einfügung hervorgehobener Klammern

    in Microsoft Word Hilfe
    Makro zur Einfügung hervorgehobener Klammern: Liebes Forum, ich zerbreche mir den Kopf, wie man Folgendes als Makro umsetzt: 1. Der markierte Text soll in eckige Klammern gesetzt werden. 2. Die eingefügten eckigen Klammern (nicht der...
  8. Tabellenübersicht aus mehreren Tabellen nach Datum sortieren

    in Microsoft Excel Hilfe
    Tabellenübersicht aus mehreren Tabellen nach Datum sortieren: Hallo, ich habe eine Tabelle für die Autowartung erstellt und möchte nun eine Übersichtseite als "Deckblatt" erstellen auf dem man alle wichtigen Daten sehen kann. Es gibt für alles auf einem...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden