Eigenschaft von zeichnungsobjekt per makro ändern

Hallo Gemeinde,

ich möchte, während ein Makro (alle Blätter schützen) ausgeführt wird, weitere Eingaben des Benutzers verhindern, indem ich

a) eine msgbox anzeige, die sich nach Ablauf des Makros aber auch wieder per Makro schließen lassen sollte. Leider finde ich keine Möglichkeit, den standardmäßgi selektierten OK-Button per Makro zu drücken…

oder

b) ein während der Makroausführung halbtransparentes Rechteck vor das Tabellenblatt legen. Sollte natürlich auch wieder verschwinden.
Hierzu wäre nötig zu wissen, wie man ein Zeichnungsobjekt in den Vorder- bzw. Hintergrund legt.

Wer hierzu eine Idee oder vielleicht sogar eine dritte und optimalere Lösung parat hat, möge sich bitte melden.

Vielen Dank an alle, die sich Gedanken machen,

Liebe Grüße,

Masl

Hinweis fenster während Makro läuft

Wer hierzu eine Idee oder vielleicht sogar eine dritte und
optimalere Lösung parat hat, möge sich bitte melden.

Hallo Masl,

um so eine Datei
http://www.uploadagent.de/show-189674-1358353377.html
zu bauen brauchst du eine Userform mit einer Textbox drauf.
Im Blatt einen Button aus Steueerlementtoolbox bzw. ein ActibeX-
Button und nachfolgende Codes für UF und Button.

Beachte im Blatt unten links die Statuszeile…

Gruß
Reinhard

In das Modul des Blattes:

Option Explicit

Private Sub CommandButton1\_Click()
Dim Zei As Long, Spa As Long, S As Long
UserForm1.Show 0
For Zei = 1 To 65536
 For Spa = 1 To 4
 If Zei Mod 50 = 0 Then
 Application.StatusBar = Format(Zei + (Spa - 1) \* 65536, "00000") & "/ " & \_
 Format(65536 \* 4, "00000")
 End If
 DoEvents
 S = S + Cells(Zei, Spa).Value
 Next Spa
Next Zei
Application.StatusBar = False
Unload UserForm1
End Sub

In das Modul von Userform1:

Option Explicit

Private Sub UserForm\_Initialize()
With UserForm1
 .StartUpPosition = 0
 .Top = -20
 .Left = 0
 .Width = Application.Width
 .Height = Application.Height
 .Enabled = False
 With .TextBox1
 .Text = "Ich arbeite, stör grad mal nich"
 .Font.Size = 16
 .Width = 400
 End With
End With
End Sub

Hallo Reinhard,

vielen Dank für die rasche Antwort und die Mühe mit dem Coden. Leider verstehe ich da nur Bahnhof. Was passiert da genau?

Wenn ich es richtig verstehe, wird jedes Mal eine Textbox erstellt, in der dann irgendwas hochzählt. Parallel dazu erscheint in der Statusleiste eine „Busy-Meldung“ :wink:

Warum muss die Box denn jedes Mal neu erstellt werden? Ich stelle mir vor, ich habe ein Zeichnungsobjekt „Rechteck1“ in der Größe des Formulars (x0, y0, x1, y1), welches still und heimlich im Hintergrund liegt, so dass es halt nicht zu sehen ist und/oder aus Versehen selektiert werden kann.

Schlägt nun der EventListener zu, weil im Formular Ereignis X ausgelöst hat, so soll dieses Rechteck sich für die Zeit der Berechnungen (Blattschutz ein/aus bei ca 60 Blättern) vor das Formular* legen, so dass der Benutzer keinerlei Eingaben mehr tätigen kann. Wenn das Makro fertig ist, soll dies natürlich wieder ermöglicht werden.

* mein Formular ist im Prinzip lediglich ein Tabellenblattausschnitt, also kein echtes Formular im eigentlichen Sinne.

Da ich deinen Code ja leider nicht so ganz :wink: verstehe, kann ich leider auch nicht einschätzen, ob du die Frage vielleicht schon vorher richtig verstanden hast und habe darum noch einmal die Problematik erläutert.

Wenn du also das Gefühl hast, dass ich dich für nicht kompetent halte, dann liegt das einzig und allein daran, dass ich mangels StarBasic-Kenntnissen nicht einschätzen kann, in wie weit dein Code die Antwort auf meine ursprünliche Frage sein könnte.

Nicht böse sein, ok? :smile:

LG, Masl

Hallo Marcel,

Wenn ich es richtig verstehe, wird jedes Mal eine Textbox
erstellt, in der dann irgendwas hochzählt. Parallel dazu
erscheint in der Statusleiste eine „Busy-Meldung“ :wink:

Wenn ich, du, alle, etwas starten und auf dem Bildschirm tut sich paar Minuten nix dann werde ich nervös. Läuft da eigentlich noch was,
ist was abgestürzt, wie lange soll ich noch warten.
Deshalb wird ja dann oft ein Fortschrittsbalken o.ä. angezeigt.

Anstatt Fortschrittsbalken habe ich die Statuszeile genommen.
Dort wirt halt beginnend bei 000001 / xxxxxxx bis
xxxxxxx / xxxxxxxx fortlaufend hochgezählt und der User sieht
aha, Code läuft noch, ist jetzt bei 471100 / xxxxxxx

Und, du willst da eine große Grafik o.ä. über alles legen, na und,
ich nahm eine Userform. Ist für den Zweck wurscht.

Aber mir ist aufgefallen, du meinst ja nicht Excel sondern Calc, also
vergiss meinen Code.
Grundsätzlich zu Calc und dem hiesigen Brett Tabellenkalkulation.
Selbstverständlich biste hier vom Brett her genau richtig.

Dickes Problem ist nur, vom Mitlesen her weiß ich daß sich hier
noch kein/kaum ein Starbasic bzw. Calc-Code Kundiger gezeigt hat.
Prinzipiell bist du der erste der sich outet wie ich an deinen Calc-Codes sehe :smile:

Wenn du da auf einer Überlappungsgrafik bestehst würde ich das in Excel-Vba so machen, daß die Grafik die ganze Zeit im Blatt
vorhanden ist in ihrer ganzen Größe aber .Visible =False

Bei Makrobeginn setze ich .Visible =True, bei Makroende
wieder .Visible =False.
Dummerweise kennt Starbasic kein Visible :frowning:
Diesen SunBeam-Kram der leider immer beim Makroaufzeichnen
erscheint kenne ich nicht, vielleicht kann man da die Sichtbarkeit
steuern.

Ich bin mir nicht ganz sicher aber glaube was du da mit Vordergrund
und Hintergrund sagtest beezieht sich auf Grafiken an gleicher Stelle,
nicht aber auf Grafik und Tabellenblatt.

Wenn du also das Gefühl hast, dass ich dich für nicht
kompetent halte

*lach* deine Sinnesantennen täuschen dich nicht bzw. dein Gefühl,
in Calc-Codierung habe ich minimalste Kenntnisse und bin ganz stolz
auf paar kleine Routinen die ich mir mit sehr viel Internetrecherche
zusammengebastelt habe.
Ich meine jetzt Starbasic und in der Tat habe ich da genau genommen
k.A.

Sorry, daß ich dir nicht direkt helfen kann.

Gruß
Reinhard