Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ShowModal=false funktioniert nicht?

Forumthread: ShowModal=false funktioniert nicht?

ShowModal=false funktioniert nicht?
03.02.2008 13:09:00
Andreas
Hallo,
ich habe einen Commandbutton der mitscrollen soll innerhablb des Tabellenblattes. Ich habe gelesen, daß dies mit ShowModal=false erreicht werden kann. Einstellen kann ich das, aber der Button scrollt nicht mit? Was mache ich falsch?
Gruß Andreas

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 13:17:00
Matthias
Hallo Andreas,
du müsstest den Button in ein UserForm stecken und dieses mit
UserForm1.Show vbModeless
anzeigen.
Dann bleibt die Tabelle erreichbar und der Button ist in einem eigenen Fenster.
Gruß Matthias

AW: ShowModal=false funktioniert nicht?
03.02.2008 13:24:56
Andreas
Hi Matthias,
danke für die schnelle Antwort.
Ich habe den Zusatz eingefügt. In der Tabelle ist jetzt folgendes hinterlegt.

Private Sub CommandButton1_Click()
UserForm1.Show vbModeless
End Sub


Abgespeichert, aber nichts ändert sich. Der Button bleibt hart an seiner Posuition stehen :-(. Muss ich noch irgend etwas einstellen in den Eigenschaften von Excel oder der Datei?
Gruß Andreas

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 13:43:00
Chris
Servus Andreas,
wo hast du den Button hinterlegt?
schau dir mal das beispiel an:
https://www.herber.de/bbs/user/49604.xls
Gruß
Chris

AW: ShowModal=false funktioniert nicht?
03.02.2008 13:59:00
Andreas
Hi,
okay that works. Danke Chris.
Gruß Andreas

AW: ShowModal=false funktioniert nicht?
03.02.2008 13:43:00
Daniel
Hi
nochmal:
ein Commandbutton, der zu einenm Tabellenblatt gehört, ist normalerweise immer an die Position einer Zelle (normalerweise die, in der sich die linke obere ecke befindet), oder eine feste x-y-Position des Excel-Blatts gebunden, dh. er wird sich beim Scrollen im Blatt immer mitbewegen.
wenn das nicht gewünscht wird, hast du folgende Möglichkeiten:
1. den Commandbutton in die erste Zeile plazieren und dann diese über FENSTER-FIXIEREN festsetzen so dass die Zeile mit dem Button immer zu sehen ist.
2. den Commandbutton nicht im Tabellenblatt, sondern in einer USERFORM oder eigenen Commandbar plazieren. Diese beiden Elemente gehören nicht zum Tabellenblatt, scrollen nicht mit und können vom Anwender beliebig auf dem Bildschirm verschoben werden.
3. du schreibst ein kleines Makro, daß den Button immer in den sichtbaren bereich der Tabelle verschiebt:
das folgende Makro würde den Button immer in die linke obere Ecke des Bildschirms verschieben, sobald eine Zelle angeklickt wird, der Code kommt ins Modul der Tabelle mit dem Button:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CommandButton1.Top = ActiveWindow.VisibleRange.Top
CommandButton1.Left = ActiveWindow.VisibleRange.Left
End Sub


Gruß, Daniel

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 13:44:00
Matthias
Hallo Andreas,
du hast mich missverstanden.
Hast du schon mal eine Userform erstellt?
Im VB-Editor Einfügen - Userform.
Dann in der Werkzeugsammlung den Button "Befehlsschaltfläche" wählen und mit der Maus einen Button in der Userform aufziehen.
Dann Rechtsklick auf den erstellten Button - "Code anzeigen" wählen.
Jetzt hast du einen Prozedurrumpf im Userform-Modul (nicht im Arbeitsblatt-Modul), wo du deinen Code ergänzen kannst.
Den Button auf dem Arbeitsblatt brauchst du hier nicht!
Viel Erfolg,
Matthias

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 14:20:41
Andreas
Hallo Matthias,
naja so habe ich noch keine erstellt (siehe Level). Hab das aber mal gemacht was du beschrieben hast. Das klappt auch alles mit dem erstellen. Aber die Aussage den Button auf dem Arbeitsblatt benötigst du nicht, die kann ich nicht einordnen. Wie bekomme ich die nach deiner Anleitung erstellte USerform ins Tabellenblatt? Jo Level Anfänger eben, sorry :-(.
Gruß Andreas

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 14:30:55
Matthias
Hallo Andreas,
wenn die Userform nur bei diesem einen Blatt sichtbar sein soll, dann ins Modul des Arbeitsblattes:

Private Sub Worksheet_Activate()
UserForm1.Show vbModeless
End Sub
Private Sub Worksheet_Deactivate()
Unload UserForm1
End Sub


Gruß Matthias

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 14:52:40
Andreas
Hi,
okay, daß bedeutet, wenn ich der Arbeitsmappe das Modul zuordne, dann ist es in jedem Tabellenblatt wie ich es auch benötige. Ich habe eine Testdatei erstellt, ALT-F11, Rechtsklick auf die Arbeitsmappe, Einfügen-UserForm, die oberen 3 Zeilen eingefügt , speichern. Aber ich habe keinen Button in einem der zwei vorhandenen Arbeitsblättern. Ich glaub ich verdreh irgend einen Gedanken komplett. Sorry, ich weiss das nervt. Vielleicht kannst du mir den Schritt noch sagen.
Gruß Andreas

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 16:21:00
Reinhard
Hi Andreas,
entspann dich, meinst du uns ist es unbekannt daß man den Wald vor lauter Bäumen nicht mehr sieht, gewiß nicht.
Mache einfach das wa da steht, kopiere den Code in das Arbeitsblatt, also Doppelklick im Editor auf den Blattnamen.
Wenn keine UF existiert kannst du ja eine einfügen, das kannst du ja.
Editor schließen.
Das wars schon. Jetzt wechsle mal von Blatt zu Blatt und schaue was sich tut.
Vielleicht noch eins, wenn die datei frisch geöffnet wird, so wird Worksheet_Activate aus mir unklaren Gründen nicht ausgeführt, also nicht wundern wenn es erst klappt wenn du die Blätter wechselst.
Abhilfe dazu ist z.B in das Workbook_Open folgendes einzutragen:
Worksheets(2).activate
Worksheets(1).activate
dann klappts mit dem Aktivierereignis für Blatt1.
Frag nach wenn was unklar ist.
Gruß
Reinhard

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 16:35:00
Andreas
Hi,
endlich, das hat geholfen Reinhard:-). Erst einmal ne Tasse Kaffee trinken, mit den Hunden spazieren gehen, dann hinsetzen und noch einmal neu konzentrieren. Okay hab das jetzt nach mehrmaligem Fragen hinbekommen. Jetzt geht es mir noch om die Positon des Commandbuttons. Wie bekomme ich den nach rechts oben? Ich habe gesehen, daß man in den Eigenschaften der UserForm Bildschirmmitte, Windowsdt. etc einstellen kann. Ich benötige dann ja wohl x und y Achse, oder sehe ich das falsch? Kannst du mir da einen Tip geben Reinhard? Mercy vorab.
Gruß Andreas

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 17:47:00
Reinhard
Hi Andreas,
ich weiß jetzt grad nicht auswendig ob es nötig ist, aber ändere mal in den Eigenschaften der UF die Startupposition oder wie das heißt auf manuell oder Benutzerbestimmt .
Dann, im Code der UF, entweder bei UseerForm_Actvate oder Userform_Initialize eingeben
Userform1.Top=45
Userform1.Left=47
Das ist bezogen auf einen bestimmten Bildschirmbereich.
Oben links ist Top 0 und Left 0
Probier halt mal, dann wirste schon sehen.
Gruß
Reinhard

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 19:16:00
Andreas
Hallo Reinhard,
ich bekomme es nicht zum laufen. Ich habe dir mal die Datei hochgeladen https://www.herber.de/bbs/user/49615.xls vielleicht siehst du etwas. Ich komme nicht dahinter, warum es in der Testdatei läuft und in der Normalen Datei nicht. Gut die hat 8 Tabellen, die andere 2 Tabellen.
Zur Info, ich habe mir einen Code ausgeliehen von Excelbeispiele.de. Es geht um Bilder einblenden.
Vielleicht kannst du mir einen Tip geben.
Gruß Andreas

Anzeige
AW: ShowModal=false funktioniert nicht?
03.02.2008 21:24:26
Andreas
Hi,
hab den Fehler lokalisiert. Wer lesen kann ist klar im Vorteil. Naja wenn ich noch ne Frage dazu habe, werde ich mich noch einmal melden. Mercy und sorry noch einmal der vielen Fragen wegen.
Gruß Andreas
;
Anzeige
Anzeige

Infobox / Tutorial

ShowModal=false in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um den CommandButton in Excel so zu gestalten, dass er beim Scrollen mit der Tabelle verschoben wird, musst du ein UserForm verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. UserForm erstellen:

    • Öffne den Visual Basic-Editor (ALT + F11).
    • Klicke mit der rechten Maustaste auf deine Arbeitsmappe und wähle "Einfügen" > "UserForm".
  2. CommandButton hinzufügen:

    • Wähle den Befehlsschaltflächen-Button aus der Werkzeugleiste und ziehe ihn in die UserForm.
  3. Code für den CommandButton:

    • Rechtsklicke auf den CommandButton in der UserForm und wähle "Code anzeigen". Füge den folgenden Code ein:
    Private Sub CommandButton1_Click()
       UserForm1.Show vbModeless
    End Sub
  4. UserForm aktivieren:

    • Füge den folgenden Code in das Arbeitsblattmodul ein, das die UserForm aktivieren soll:
    Private Sub Worksheet_Activate()
       UserForm1.Show vbModeless
    End Sub
    
    Private Sub Worksheet_Deactivate()
       Unload UserForm1
    End Sub
  5. Testen:

    • Speichere deine Änderungen und wechsle zwischen den Blättern, um sicherzustellen, dass die UserForm korrekt angezeigt wird.

Häufige Fehler und Lösungen

  • Fehler: "showmodal is not a function"

    • Stelle sicher, dass du die UserForm im richtigen Kontext aufrufst, wie im obigen Beispiel gezeigt.
  • Problem mit der Button-Position:

    • Wenn der Button nicht mit der Tabelle scrollt, überprüfe, ob du ihn direkt im UserForm platziert hast und nicht auf dem Arbeitsblatt.
  • UserForm wird nicht angezeigt:

    • Überprüfe, ob der Code im Arbeitsblattmodul korrekt eingefügt ist. Achte darauf, dass die Namen übereinstimmen (z.B. UserForm1).

Alternative Methoden

Falls du keinen CommandButton verwenden möchtest, gibt es auch andere Möglichkeiten:

  1. Verwendung von Excel-Tabellen:

    • Platziere den Button in der ersten Zeile und fixiere die Fenster, damit die Zeile sichtbar bleibt.
  2. Makro zur Button-Positionierung:

    • Du kannst ein Makro schreiben, das den Button immer in den sichtbaren Bereich verschiebt. Beispiel:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       CommandButton1.Top = ActiveWindow.VisibleRange.Top
       CommandButton1.Left = ActiveWindow.VisibleRange.Left
    End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du die UserForm bei einem bestimmten Ereignis anzeigen lässt:

Private Sub Worksheet_Activate()
    UserForm1.Show vbModeless
End Sub

Private Sub Worksheet_Deactivate()
    Unload UserForm1
End Sub

Dieses Beispiel zeigt, wie die UserForm angezeigt wird, wenn das Arbeitsblatt aktiviert wird. Achte darauf, dass du die Show vbModeless-Eigenschaft verwendest, um die Tabelle weiterhin bedienen zu können.


Tipps für Profis

  • Position der UserForm:

    • Um die Position der UserForm zu steuern, kannst du die Eigenschaften Top und Left im Code festlegen, um sie an deinem bevorzugten Ort anzuzeigen.
  • Verwendung von showmodal:

    • Teste die Verwendung von showmodal vs. show vbModeless, um zu sehen, welche Option für deine Anwendung am besten geeignet ist.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine UserForm immer sichtbar bleibt? Um die UserForm sichtbar zu halten, verwende die vbModeless-Eigenschaft, wenn du die UserForm anzeigst.

2. Warum scrollt mein CommandButton nicht mit der Tabelle? Wenn der Button nicht mitscrollt, liegt das daran, dass er im Arbeitsblatt und nicht in einer UserForm platziert wurde.

3. Kann ich mehrere UserForms in einer Datei haben? Ja, du kannst mehrere UserForms in einer Excel-Datei erstellen. Jede UserForm kann unabhängig voneinander gesteuert werden.

4. Wie kann ich die Größe der UserForm anpassen? Du kannst die Größe der UserForm in den Eigenschaften im Visual Basic-Editor anpassen oder im Code mit UserForm1.Width und UserForm1.Height.

5. Was tun, wenn der Code nicht funktioniert? Überprüfe die Syntax und stelle sicher, dass du den richtigen Code im richtigen Modul hast. Manchmal kann ein einfacher Schreibfehler die Ursache sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige