Microsoft Excel

Herbers Excel/VBA-Archiv

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

Makro bringt Excel zum Absturz | Herbers Excel-Forum


Betrifft: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 02:03:59

Hi Ihr,

ich habe folgendes Makro erstellt, dass manchmal leider mein Excel zum Absturz bringt. :-(

Ich vermute, dass liegt daran, dass hier einige Schritte enthalten sind, die manchmal schon vor dem Start des Makros manuell ausgeführt wurden.

Könnt Ihr mir sagen, wie ich hier eine Wenn-Dann-Prüfung einbinde, damit die Passwort-Abfrage und das Einblenden der Zeile nur dann geschehen, wenn dies noch nicht passiert ist ?

Sub Reset()

With ActiveWorkbook.Worksheets(2)
    ActiveSheet.Unprotect "XXX"
    If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(1).Delete
    Rows(6).Hidden = True
    Range("E3").FormulaR1C1 = "all"
    Range("E2").ClearContents
    Range("L3").ClearContents
    Selection.AutoFilter Field:=2, _
        Criteria1:=Range("N2")
    Selection.AutoFilter Field:=1, _
        Criteria1:=Range("M2")
    ActiveSheet.Protect UserInterfaceOnly:=True, Password:="XXX"
    Range("E2").Select
End With

End Sub
LG und vielen Dank Euch im Voraus,
Jenny

  

Betrifft: AW: Makro bringt Excel zum Absturz von: fcs
Geschrieben am: 03.04.2012 08:46:09

Hallo Jenny,

die Kennwort-Abfrage erfolgt eigentlich nur dann, wenn das im Makro hinterlegte Kennwort nicht stimmt.

Für mich ist unklar, was du mit "With ActiveWorkbook.Worksheets(2)" erreichen willst. Denn in den folgenden Zeilen stellst du keinen Bezug zu diesem Objekt her (Das wäre dann der Fall, wenn vor den jeweiligen Objekten wie Range, Autofilter, u.a. jeweils ein Punkt steht.

Probleme gibt es auf jeden Fall, wenn zum Zeitpunkt der Makro-Ausführung im aktiven Blatt kein Autofilter vorhanden ist.

Bevor man hier konkret helfen kann müßte du noch etwas genauer beschreiben, was dein Makro genau machen soll.

Gruß
Franz


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 10:42:57

Hallo Franz,

vielen Dank für Deine Nachricht ! :-)

Ich bin mit VBA noch ganz am Anfang und es kann durchaus sein, dass der Code, so wie ich ihn geschrieben habe, nicht ideal ist - da bin ich für jeden Tipp dankbar !

Das Makro hat die Aufgabe, alle Auswahlen und Einträge auf einem Blatt (Blatt 2) auf den Default zurückzusetzen, d.h. folgende Aktionen durchzuführen:
1) Falls über ein anderes Makro (Image Container) gerade ein Bild eingeblendet ist, dieses ausblenden.
2) Zeile 6 ausblenden.
3) In Zelle E3 den Text "all" eintragen.
4) Einen eventuellen Eintrag in Zelle E2 löschen.
5) Einen eventuellen Eintrag in Zelle L3 löschen.
6) Die Filter in N2 und M2 zurücksetzen, so dass wieder alle Einträge angezeigt werden (der Filter ist dabei immer gesetzt und kann vom User auch nicht entfernt werden !).
7) Zelle E2 auswählen.

Zusätzlich muss dabei dass Passwort zuvor aufgehoben und danach wieder gesetzt werden.

Sonderfälle:
1) Es kann sein, dass das Passwort bereits vorher manuell vom Admin aufgehoben wurde (dafür bislang noch keine Lösung !).
2) Es kann sein, dass Zeile 6 bereits vorher manuell vom Admin ausgeblendet wurde (dafür bislang noch keine Lösung !).
3) Es kann sein, dass Zelle E3 bereits den Wert "all" enthält (dafür bislang noch keine Lösung !).

Konnte ich es jetzt besser erklären ? :-)

LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 11:11:04

Hallo,
teste mal.

Sub ResetSheet2()
  With ActiveWorkbook.Worksheets(2)
      .Unprotect "XXX"
      If .Pictures.Count > 0 Then .Pictures(1).Delete
      .Rows(6).Hidden = True
      .Range("E3").FormulaR1C1 = "all"
      .Range("E2").ClearContents
      .Range("L3").ClearContents
      If .FilterMode Then .ShowAllData
      .Protect UserInterfaceOnly:=True, Password:="XXX"
      Application.Goto .Range("E2"), True
  End With
End Sub

Deine 3 Sonderfälle: Völlig egal.

Reset ist eine VBA-Anweisung und sollte nicht als Makroname benutzt werden.

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 11:44:48

Hallo Rudi,

vielen Dank dafür ! :-)

Ich habe noch ein paar Fragen dazu, damit ich's auch (als Anfänger) richtig verstehe: ;-)
1) Du hast die ActiveSheet-Teile komplett herausgenommen. Bewirkt das nicht, dass der gleiche Schritt auch auf andere Blätter angewendet wird ? Es ist wichtig, dass das nur auf Blatt2 passiert.
2) Ist es bei dem Ausblenden der Zeile 6 und dem Eintrag "all" nicht notwendig zu prüfen, ob evtl. schon geschehen ? Das konnte ich jetzt im Code noch nicht sehen und war meiner Vermutung nach der Grund für die Abstürze ?
Prüft Dein Code das beim Aufheben / Setzen des Makros ?

LG und sorry, wenn ich dumm frage - ich kenne mich leider noch nicht allzu gut aus,
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 12:21:04

Hallo,
1) Du hast die ActiveSheet-Teile komplett herausgenommen. Bewirkt das nicht, dass der gleiche Schritt auch auf andere Blätter angewendet wird ? Es ist wichtig, dass das nur auf Blatt2 passiert.
das ist durch die Referenzierung auf Worksheets(2) gewährleistet. Im Gegensatz zu ActiveSheet. Dort würde der Code auf das Aktive Blatt angewendet, egal welches es ist.

2) Ist es bei dem Ausblenden der Zeile 6 und dem Eintrag "all" nicht notwendig zu prüfen, ob evtl. schon geschehen ?
wozu prüfen? Wenn man 'all' in die Zelle schreibt, obwohl schon 'all' drinsteht, passiert doch nix. Dito wenn man eine ausgeblendete Zeile ausblendet.

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 13:45:18

Hallo Rudi,

vielen Dank nochmal !

Das klappt leider nicht ganz so gut - der neue Code rechnet sehr lange und ändert die Anzeige einiger anderer Zeilen, die über dem Filter liegen.

Kannst Du mir vielleicht nur sagen, wie ich prüfe, ob der Passwortschutz noch nicht aufgehoben ist und nur in diesem Fall das Passwort eingeben lasse ?

Ich glaube, das sollte schon reichen, da das Makro nur von diesem einen Blatt aus gestartet werden kann (keine Tastenkombination). :-)

LG und nochmals vielen Dank,
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 13:56:19

Hallo,
If Activesheet.protectcontents then activesheeet.unprotect "xxx"
Aber auch das musst du nicht prüfen.
activesheeet.unprotect "xxx" funktioniert auch in einem ungeschützten Blatt.

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 14:01:14

Hallo Rudi,

vielen Dank nochmal ! :-)

Das ist auf jeden Fall gut zu wissen.
Ich habe in der Zwischenzeit auch noch ein paar andere Änderungen vorgenommen und werde beides mal ausprobieren, um zu sehen, was stabiler läuft.

LG und Dir noch einen schönen Nachmittag,
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 14:46:50

Hallo Rudi,

ich habe den Fehler gefunden.. :-)

Es lag gar nicht an dem ursprünglichen Reset-Makro, sondern an der Kombination mit einem anderen Code.

Verwende ich das Makro mit dem ursprünglichen Code alleine läuft es einwandfrei, gleiches gilt für den folgenden Code separat - kombiniere ich diesen jedoch mit dem Reset-Makro stürzt Excel komplett ab und zwar bei jedem Versuch. :-(

Weisst Du zufällig auch, was hier falsch ist bzw. wie ich den Code ohne Gefahr mit dem Reset-Makro kombinieren kann ? Die folgenden Codes sollen dabei eigentlich nur eine im gleichen Blatt befindliche AutoForm ein- bzw. ausblenden, um so dahinter gelegte OptionButtons sichtbar bzw. unsichtbar zu machen..

Option 1:

Sub RadioButtonsShow()
    ActiveSheet.Shapes.Range(Array("Rectangle 9")).Select
    Selection.ShapeRange.ZOrder msoSendToBack
End Sub
Option 2:
Sub RadioButtonsHide()
    ActiveSheet.Shapes.Range(Array("Rectangle 9")).Select
    Selection.ShapeRange.ZOrder msoBringToFront
End Sub
LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 15:19:07

Hallo,
das finde ich jetzt eine kuriose Methode.
Ich würde die Visible-Eigenschaft der Steuerelemente auf False oder True setzen.

Vielleicht ohne die Selecterei.

Sub RadioButtonsShow()
    ActiveSheet.Shapes.("Rectangle 9")).ZOrder msoSendToBack
End Sub
Sub RadioButtonsHide()
    ActiveSheet.Shapes.("Rectangle 9")).ZOrder msoBringToFront
End Sub

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 15:27:23

Hallo Rudi,

da habe ich wahrscheinlich (aus Unwissen) um ein bisschen zu viele Ecken gedacht. :-)

Wie geht denn Dein Weg mit dem Visible auf True / False setzen - der ist bestimmt besser ? ;-)

LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 15:31:24

Hallo,
Activesheets.shapes("Optionsfeld 1").Visible=False

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 15:44:17

Danke nochmal, Rudi !

Hier bekomme ich die Fehlermeldung "Run time error 424. Object required".

Ich vermute, dass liegt an der Bezeichnung der Buttons, wobei ich es auch mit dem probiert habe, was ich im Code für sie angezeigt bekomme, d.h. Option Button 11 und Option Button 12.

Kann man vielleicht einfach alle Option Buttons ausblenden, damit sich Excel nicht an deren Bezeichnung stört ?
Vielleicht hat das zuvor auch den Crash verursacht ?

Probiert hatte ich es so (da ich momentan 2 Option Buttons verwende):

Sub RadioButtonsHide()
'
' Macro5 Macro
'
' Keyboard Shortcut: Ctrl+h
'
Activesheets.Shapes("Option Button 12").Visible = False
Activesheets.Shapes("Option Button 11").Visible = False
End Sub
LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 15:54:19

Hallo,

Sub aaa()
  'ausblenden
  ShowHideButtons Sheets(2), False
End Sub

Sub bbb()
  'einblenden
  ShowHideButtons Sheets(2), True
End Sub

Sub ShowHideButtons(wks As Worksheet, blnVisible As Boolean)
  Dim objShape As Shape
  For Each objShape In wks.Shapes
    If objShape.FormControlType = xlOptionButton Then
      objShape.Visible = blnVisible
    End If
  Next objShape
End Sub

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 16:27:37

...oh nein - jetzt bekomme ich "Run-time error 1004: Application-defined or object-defined error." :-(

Ich habe es wie folgt probiert:

Dein neues Sub, in einem Modul:

Sub ShowHideButtons(wks As Worksheet, blnVisible As Boolean)
  Dim objShape As Shape
  For Each objShape In wks.Shapes
    If objShape.FormControlType = xlOptionButton Then
      objShape.Visible = blnVisible
    End If
  Next objShape
End Sub
Mein eigentliches
Sub mit der Anpassung von Dir, im gleichen Modul: 
Sub Reset()
With ActiveWorkbook.Worksheets(2)
    ActiveSheet.Unprotect "XXX"
    ShowHideButtons Sheets(2), False
    If ActiveSheet.Pictures.Count > 0 Then ActiveSheet.Pictures(1).Delete
    Rows(6).Hidden = True
    Range("E3").FormulaR1C1 = "all"
    Range("E2").ClearContents
    Selection.AutoFilter Field:=2, _
        Criteria1:=Range("N2")
    Selection.AutoFilter Field:=1, _
        Criteria1:=Range("M2")
    Range("L3").ClearContents
    Range("E2").Select
    ActiveSheet.Protect UserInterfaceOnly:=True, Password:="XXX"
End With
End Sub
Ich bin ratlos.. ;-)

LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Rudi Maintaire
Geschrieben am: 03.04.2012 17:01:28

Hallo,
kannst du die Mappe hochladen?
So kommen wir nicht weiter.

Gruß
Rudi


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 03.04.2012 21:36:23

Hallo Rudi,

da hier mehrere gleichzeitig geantwortet haben, wusste ich nicht genau, wie ich am besten zurückschreibe.

Zur Info für Dich hier noch einmal die Datei - die Erklärung steht in meiner letzen Antwort an Reinhard:

https://www.herber.de/bbs/user/79658.xlsm

LG und nochmals vielen Dank für alle Hilfe - einen schönene Abend noch,
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 04.04.2012 00:42:37

Hallo an alle,

ich habe den Fehler gefunden - es lag an der With-Schleife.

Nimmt man die raus klappt alles bestens und die Shapes lassen sich dann auch mit ActiveSheet.Shapes("Shame Name").Visible = True / False wie gewünscht ein- und ausblenden.

Trotzdem vielen Dank Euch für alle Tipps !

LG
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Reinhard
Geschrieben am: 03.04.2012 17:19:05

Hallo Jenny,

aus Neugierde, bist du DIE Jenny, also gehören alle aktuellen Jenny-Beitragsfolgen dir oder
geistern da noch paar Jennys hier rum?
Im ersteren Fall, Respekt, da haste dir aber viel gleichzeitig vorgenommen *staun*

Leider ist es so wenn man viel gleichzeitig angeht bleibt manches auf der Strecke.
So z.B. der prozedurnamen "Reset", der ist leider schon wieder/immer noch da :-(
Und bitte bei Fehlerangaben auch die entsprechende Codezeile angeben sofern möglich.
Danke.

Gruß
Reinhard


  

Betrifft: OT @ Reinhard von: hary
Geschrieben am: 03.04.2012 17:59:48

Hallo Reinhard

bist du DIE Jenny, also gehören alle aktuellen Jenny-Beitragsfolgen dir

Darueber hab ich auch schon nachgedacht. Vor allem wenn man sich die Takte der Uhrzeiten betrachtet. Mit viel schlaf is nicht, dass geht wohl nur mit Red Bull. ;-)))
gruss hary


  

Betrifft: tja, uns fehlt da was oder wir haben da was zuviel von: Reinhard
Geschrieben am: 03.04.2012 18:30:25

Hallo Hary,

ich mein damit diese X/Y Chromosomen.
Je nach Konstellation haste täglich ein Problem und mußt dich rasieren.
Im andern Fall haste alle paar Wochen ein kleines Problemchen :-)

Der erstere Fall ist schlimm weil das täglich nervt. Im anderen Fall ist das easy,
da benutzt man irgendwas und kann sofort Radfahren, Schwimmen, Tanzen, also alles.
Und Multitaskingfähig ist "man" dann auch noch wie sich das hier andeutet.
Naja, wir zwei hatten also nicht dieses Glück *seufz*
*grien*

Gruß
Reinhard


  

Betrifft: tut dat not? von: Alice
Geschrieben am: 03.04.2012 20:24:57

Hallo,
Je nach Konstellation haste täglich ein Problem und mußt dich rasieren.
Dann lass die Fusseln stehen.

Hol dir gepflegt einen runter, dann is dat 'Hirn' wieder frei.

Gruß
Alice

Warum sind Frauenhirne billiger als Männerhirne?
Die sind schon gebraucht!


  

Betrifft: Interessant von: Reinhard
Geschrieben am: 03.04.2012 21:46:22

Hallo Alice,

netter Name *find*
Ich finde es aber auch höchst (naja, eher nicht) erstaunlich daß ich bei den Beiträgen hier
seltenst bis gar nicht den Namen Alice las. Und jetzt, wie per Zufall, taucht eine Alice am Ende
eines recht langen Threads auf. So Zufälle gibt es m.E. nicht.

Also bist du ein armseliger Zweitnick der sich nicht mal traut unter seinem Erstnick zu schreiben.
So wie . oder zu usw.
Sowas ist nicht mein Stil. Seit über 10 Jahren bin ich hier der "Reinhard", (andere reinhards tauchen
gelegentlich auch auf aber gehen auch bald wieder bzw. sie setzen noch einen Zusatz dazu *bedank*)
Insofern kann jeder hier alle meine Irrungen und Wirrungen in Bezug auf Excel und/oder Vba
mitbekommen haben.

Und wenn ich mit einem Beitrag hier nicht einverstanden bin so sage ich das als Reinhard.
DU nicht, du versteckst dich hinter deinem Zweitnick und rätst mir ich solle
"liebe an und für sich" tun/machen.

Ich habe an Hary geantwortet, von mir aus gesehen witzig, und dabei niemanden persönlich
angegriffen.

Was mich ärgert ist daß du das was dich an meinem Beitrag möglicherweise sehr stört
nicht nennst. Dazu das mit dem für mich offensichtlichen Zweitnick.
Spontan, mehr als sofort, fiel mit Brecht ein, die im Dunklen sieht man nicht...
Siehe http://de.wikipedia.org/wiki/Die_Moritat_von_Mackie_Messer

Und, du bist sowas wie ein Mann. Kann ja sein einer Frau mißfiel mein Beitrag, garantiert
hätte sie nicht diesen Gähn-Witz hinzugefügt.

Gruß
Reinhard


  

Betrifft: AW: Interessant von: Jenny
Geschrieben am: 03.04.2012 21:55:00

Hallo Reinhard,

...Dir ist schon klar, dass Du Deine ganzen Kommentare - für wen sie auch immer gedacht sein mögen - an mich schickst, oder ?

:-(

Jenny


  

Betrifft: AW: OT @ Reinhard von: Jenny
Geschrieben am: 03.04.2012 20:19:01

Hallo an alle und vielen Dank für all die Beiträge ! :-)

Ich vermutte, es gibt bestimmt noch andere Jennys hier im Forum aber Ihr habt recht, ich hatte die letzten Tage etwas mehr zu tun und dementsprechend auch mehr Fragen, als sonst. ;-)

Ich habe die Datei jetzt einmal hier hochgeladen (s.u.).
Da die Originaldatei mehrere tausend Datensätze und zudem vertrauliche Daten enthält, musste ich vorher alle Daten und Texte entfernen bzw. durch Platzhalter ersetzen - es sollte aber trotzdem funktionieren.

Normalerweise sehen alle User mit Ausnahme der Admins nur Blatt 2 und können auf die anderen nicht zugreifen - das habe ich hier geändert, damit man die volle Datei sieht. Ihr solltet damit alle vier Blätter sehen.

Die Passworte habe ich für Blatt 2 auf "XXX" und für die Admin-Makros auf "9" gesetzt.

Das Problem um das es geht, ist das Reset Sub, das über den gleichnamigen Button auf Blatt 2 gestartet wird und eigentlich auch die zwei Option Buttons auf dem gleichen Blatt ausblenden bzw. unsichtbar machen sollte.

https://www.herber.de/bbs/user/79654.xlsm

Ich hoffe, es hilft Euch weiter ! Bitte meldet Euch einfach, wenn Fragen aufkommen. :-)

LG und vielen Dank nochmal an alle,
Jenny


  

Betrifft: AW: OT @ Reinhard von: Jenny
Geschrieben am: 03.04.2012 20:22:58

...sorry, ich hatte in der Eile vergessen, das Passwort für die Entwicklerumgebung zu entfernen - daher hier die gleiche Datei noch einmal ohne dieses. ;-)

https://www.herber.de/bbs/user/79655.xlsm

LG,
Jenny


  

Betrifft: AW: Makro bringt Excel zum Absturz von: Jenny
Geschrieben am: 04.04.2012 00:42:20

Hallo an alle,

ich habe den Fehler gefunden - es lag an der With-Schleife.

Nimmt man die raus klappt alles bestens und die Shapes lassen sich dann auch mit ActiveSheet.Shapes("Shame Name").Visible = True / False wie gewünscht ein- und ausblenden.

Trotzdem vielen Dank Euch für alle Tipps !

LG
Jenny