Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Lösch-Aktion

Betrifft: Lösch-Aktion von: Frank
Geschrieben am: 25.08.2004 15:19:14

Hallo Excel-Freunde,

wie kann ich die Lösch-Aktion wie unten angezeigt verkürzt eingeben
so das auch diese schneller abläuft.
(Download funktioniert nicht(Lösch-Aktion.xls))

Grüß
Frank


Sub MA_Neue_Gesamtberechnung()			
'			
' MA_Neue_Gesamtberechnung Makro			
 Makro am 25.08.2004			
'			
			
'			
    			
    If MsgBox("Sollen die Daten unwiederruflich gelöscht werden", vbQuestion + vbYesNo, "                       Lösch-Aktion!") = vbYes Then			
    Application.ScreenUpdating = False			
    Sheets("MA Blindplatten 1").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 1").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 1").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 1").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 1").Select			
    ActiveWindow.ScrollWorkbookTabs Sheets:=1			
    Application.Run "Modul41.Neue_Berechnung"			
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1			
    Sheets("MA Gesamtberechnung").Select			
    Sheets("MA Blindplatten 2").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 2").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 2").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 2").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 2").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Blindplatten 3").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 3").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 3").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 3").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 3").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Blindplatten 4").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 4").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 4").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 4").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 4").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Blindplatten 5").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 5").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 5").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 5").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 5").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Blindplatten 6").Select			
    Application.Run "Modul41.Neue_Berechnung"							
    Sheets("MA Diverses 6").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Frontplatten 6").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Gehäuse 6").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Rückwand 6").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Blindplatten 7").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Diverses 7").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Frontplatten 7").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Gehäuse 7").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Rückwand 7").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Blindplatten 8").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Diverses 8").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Frontplatten 8").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Gehäuse 8").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Rückwand 8").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Blindplatten 9").Select									
    Application.Run "Modul41.Neue_Berechnung"									
    Sheets("MA Diverses 9").Select									
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 9").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 9").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 9").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Blindplatten 10").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Diverses 10").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Frontplatten 10").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Gehäuse 10").Select			
    Application.Run "Modul41.Neue_Berechnung"			
    Sheets("MA Rückwand 10").Select			
    Application.Run "Modul41.Neue_Berechnung"
    ActiveWindow.ScrollWorkbookTabs Sheets:=1
    Application.ScreenUpdating = False
    Sheets("Einzelsummen").Select
    Range("A3").Select
    Else
 End If

    End Sub

  


Betrifft: AW: Lösch-Aktion von: Andreas Walter
Geschrieben am: 25.08.2004 16:02:19

Zuerst zum UPload
Nenn die Datei loeschaktion.xls
(ohne Umlaut und ohne Strich)
und speicher sie zuerst bei Dir in (z.B.) C:
(bzw. irgendwo ganz oben, oder in einem Top-verzeichnis, ohne Sonderzeichen im Namen)
dann klappt es mit dem UPload

Dann - ich weiß nicht was
Application.Run "Modul41.Neue_Berechnung"
macht. Aber ist es wirklich notwendig JEDES Mal es aufzurufen?

Und weiter
for i=1 to 10
Sheets("MA Gehäuse " & i).Select
Application.Run "Modul41.Neue_Berechnung"
next i
schleift von 1 bis 10 durch und "macht" ("MA Gehäuse 1") ("MA Gehäuse 2") usw. bis ("MA Gehäuse 10"
Das verkurzt die Code auf jedem Fall. Hilft das?

Und als letzter Tipp. Versuch
Application.calculation
am Anfang auf manuell und am Ende auf Automatisch
zu setzen.


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 25.08.2004 16:09:57

Hallo Andreas,

Danke für deine schnelle Hilfe werden es baldmöglichst ausprobieren

Gruß
Frank

Datei: https://www.herber.de/bbs/user/10107.xls


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 25.08.2004 16:36:06

Hallo Andreas,

ich habe es ausprobiert aber meine VBA-Kentnisse sind doch zu geringfügig
das ich dieses Problem mit deinen Angaben lösen konnte.

Mit dem upload hat es jetzt funktioniert. (s.1 AW)

Das Modul41 ist der upload aus VBA kopiert.

Danke für deine Hilfe
Frank




  


Betrifft: AW: Lösch-Aktion von: Andreas Walter
Geschrieben am: 25.08.2004 16:47:49

Ja aber was ist

Application.Run "Modul41.Neue_Berechnung"

Ich sehe nur
MA_Neue_Gesamtberechnung()

Und was meinst Du genau mit
- ich habe es ausprobiert
Was hast Du gemacht - was ist geschehen?

Mehr Infos bitte


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 26.08.2004 07:57:29

Hallo Andreas,

ich habe mehrere Tabellenblätter mit Summenergebnissen
die in einem Tabellenblatt Namens Gesamtberechnung zusammengefasst werden
um diese Summen zur Neuberechnung wieder zu löschen dient die Application.Run "Modul41.Neue_Berechnung".
Erstellt mit Makrorecorder.
Dies funktioniert auch wunderbar das größte Problem ist A: Die umfangreiche Eingabe
und B: Die Lösch-Aktion dauert mindestens 1 Minute.

Leider weiss ich nicht wie die genaue Eingabe lautet die du mir zugesand hattest
da er mir einen Fehler anzeigt - Fehler beim Komplilieren- Außerhalb einer Prozedur
ungültig.

File: https://www.herber.de/bbs/user/10121.xls

Gruß
Anfänger Frank


  


Betrifft: AW: Lösch-Aktion von: Andreas Walter
Geschrieben am: 26.08.2004 09:07:56

Ok Dir fehlt anscheinend Baiswissen.

Ein Makro ist ein Subprogramm.
Es fängt mit z.B.
Sub Test()
an. Und hört mit 
End Sub

auf.

Sub Willko()
Msgbox "Hallo Welt"
End Sub


Ist ein einfaches Makro mit Namen "Willko" und es schreibt "Hallo Welt" in einem Messagebox. Du hast ein Makro mit Namen MA_Neue_Gesamtberechnung
Die Befehle die ich Dir gegeben habe, geören zwischen dem "Sub" und dem "End Sub" Befehl


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 26.08.2004 10:23:35

Sorry,

Neue Berechnung nun gefunden, war nicht enthalten
habe eine vereinfachte Mappe erstellt
funktioniert aber leider nicht.

https://www.herber.de/bbs/user/10135.xls

Frank


  


Betrifft: AW: Lösch-Aktion von: Andreas Walter
Geschrieben am: 26.08.2004 11:04:30

Mein lieber Frank,

Jetzt. Einmal tief durchatmen.
Ich habe nicht den blassesten Schimmer von was du erreichen möchtest.
Im Augangsposting stand
- wie kann ich die Lösch-Aktion wie unten angezeigt verkürzt eingeben
- so das auch diese schneller abläuft.

Ich habe Dir versch. Tipps gegeben, die Du noch nicht alle durchprobiert hast.


Jetzt schreibst Du
- funktioniert aber leider nicht.
"funktioniert nicht" ist nicht besondes viele Information oder? Wenn ich Dir sage, mein PC "funktioniert nicht", wirst Du mir kaum helfen können oder?

Was funktioniert nicht? was passiert? kommt eine Fehlermeldung? welche? usw. usw.

Zur Info:
Wenn ich es richtig verstehe ist
Application.Run "Modul2.Neue_Berechnung"
genau gas gleiche wie
Call Neue_Berechnung
Vielleicht ist das schneller

Mit folgendem Code
For i = 1 To 10
Sheets("Tabelle 1" & i).Select
Sheets("Tabelle 2" & i).Select
Sheets("Tabelle 3" & i).Select
Application.Run "Modul2.Neue_Berechnung"
Next i
versuchst Du
auf "Tabelle 11" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 21" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 31" zzugreifen und dann Neue_Berechnung aufzurufen
Dann

auf "Tabelle 12" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 22" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 32" zzugreifen und dann Neue_Berechnung aufzurufen
usw. bis
auf "Tabelle 110" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 210" zuzugriefen aber dann machst Du überhaupt nichts damit
dann auf "Tabelle 310" zzugreifen und dann Neue_Berechnung aufzurufen

Sprich Käse.

Jetzt einmal tiefdurchatmen und nochmals genau erklären was Du erreichen möchtest


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 26.08.2004 11:29:46

Danke für deine verständliche Rüge,

Habe das File noch etwas abgeändert.
https://www.herber.de/bbs/user/10139.xls

In den Tabellenblätter Gehäuse 1 u. 2 Rückwand 1 u. 2
sollten alle 1 Werte auf 0 gesetzt werden,
jedoch beim betätigen der Schaltfläche bekomme ich die Fehlermeldung
Laufzeitfehler Index außerhalb des gültigen Bereichs.

Frank


  


Betrifft: AW: Lösch-Aktion von: Andreas Walter
Geschrieben am: 26.08.2004 11:44:31

Ein Schritt in die richtige Richtung.

Ich habe es schon vorhin erklärt. Ich erkläre es nochmals und ausführlicher.
Du hast
For i = 1 To 2
Sheets("Gehäuse 1" & i).Select
Sheets("Gehäuse 2" & i).Select
Sheets("Rückwand 1" & i).Select
Sheets("Rückwand 2" & i).Select
Application.Run "Modul2.Neue_Berechnung"
Next i

Das ist eine Schleife. Die Schleife wird zweimal durchlaufen, einmal mit dem Wert 1 in der Variable i und einmal mit dem Wert 2 in der Variable i

Bei dem ersten Durchlauf ist i=1. Der erster Befehl lautet
Sheets("Gehäuse 1" & i).Select
Der Computer ersetzt i durch 1 und errechnet
Sheets("Gehäuse 11").Select
Aber Du hast gar kein Sheet Gehäuse 11

Richtig wäre daher
For i = 1 To 2
Sheets("Gehäuse " & i).Select
Sheets("Rückwand " & i).Select
Application.Run "Modul2.Neue_Berechnung"
Next i

Dann wurde er im ersten Durchlauf "Gehäuse 1" und danach "Rückwand 1" ansprechen. Und im zweiten Lauf "Gehäuse 2" und danach "Rückwand 2" ansprechen. Aber ansprechen allein (mit SELECT) ist nichts. Ein SELECT macht nichts (ausser das Blatt zu archivieren). Du hast keine Aktion vorgenommen.

Vielleicht
For i = 1 To 2
Sheets("Gehäuse " & i).Select
Application.Run "Modul2.Neue_Berechnung"
Sheets("Rückwand " & i).Select
Application.Run "Modul2.Neue_Berechnung"
Next i


Dann ruft er Dein makro Neue_Berechnung auf allen vier Blättern auf.
Aber was diese Neue_Berechnung machen soll, und ob das korrekt ist, entzieht meine Kenntnisse.


  


Betrifft: AW: Lösch-Aktion von: Frank
Geschrieben am: 26.08.2004 12:00:43

Super jetzt funktioniert es,

danke Andreas für deine ausdauernde Hilfe
ich habe viel dazugelernt.

Gruß
Frank