Supportnet / Forum / Tabellenkalkulation
Auto Open Makro ändern.
Frage
Hallo liebe Excelgemeide,
ich habe in einer Datei ein Auto Open Makro und zwar:Sub auto_Open()
MsgBox ("Willkommen in der Excel-Datei erstellt von.")
End Sub
Ist es möglich in die MsgBox ein Feld für ein Häckchen einzubauen mit den Text daneben "Diesen Dialog in Zukunft nicht mehr anzeigen", und wenn das Häckchen gesetz wird, die MsgBox in Zukunft nicht mehr erscheint. Ich geh mal davon aus das das für die VBA Fachleute hier kein Problem darstellt.
Also mal vielen Dank im vorraus.
Gruß Michael
Antwort 1 von Guenter
Hallo,
mit einer MsgBox geht das meines Wissens nicht.
Man könnte sich aber eine UserForm erstellen, die genauso gut aussieht, den Willkommen-Text in einer Textbox enthält und dazu noch eine CheckBox und einen CommandButton.
Nach Schließen der UserForm müsste diese ausgewertet werden und das Makro sollte den Code des auto_open Makros verändern.
Das wäre wohl alles möglich, aber ...
Vielleicht hat jemand noch eine bessere, einfachere Lösung.
Gruß
Günter
mit einer MsgBox geht das meines Wissens nicht.
Man könnte sich aber eine UserForm erstellen, die genauso gut aussieht, den Willkommen-Text in einer Textbox enthält und dazu noch eine CheckBox und einen CommandButton.
Nach Schließen der UserForm müsste diese ausgewertet werden und das Makro sollte den Code des auto_open Makros verändern.
Das wäre wohl alles möglich, aber ...
Vielleicht hat jemand noch eine bessere, einfachere Lösung.
Gruß
Günter
Antwort 2 von Michael10
Hallo Günter,
erst vielen Dank für deine schnelle Rückmeldung, da hab ich mich wohl getäuscht ist das ganze schwieriger wie ich mir das gedacht habe.
Vielleicht hat ja wer anders noch ne Idee dazu.
Gruß Michael.
erst vielen Dank für deine schnelle Rückmeldung, da hab ich mich wohl getäuscht ist das ganze schwieriger wie ich mir das gedacht habe.
Vielleicht hat ja wer anders noch ne Idee dazu.
Gruß Michael.
Antwort 3 von Michael10
Hallo noch mal an Alle,
ich könnte auch ein "Kontrollkästchen" in eine der Excelseiten in meine Datei einbauen die das Makro abfrägt wobei aber das Makro nicht auf der Seite in der das Kontrollkästen ist, stehen bleiben darf. Ich hoffe ich verständlich genug ausgedrückt.
Gruß Michael.
ich könnte auch ein "Kontrollkästchen" in eine der Excelseiten in meine Datei einbauen die das Makro abfrägt wobei aber das Makro nicht auf der Seite in der das Kontrollkästen ist, stehen bleiben darf. Ich hoffe ich verständlich genug ausgedrückt.
Gruß Michael.
Antwort 4 von Guenter
Hallo nochmal,
Deine letzte Frage habe ich nicht so ganz verstanden.
Allerdings habe ich jetzt ein Makro im INet gefunden, mit dem man Makros verändern kann.
Hier ist der Code:
gefunden bei
http://www.excel-vba.de/makro.htm#ersetzen
Du kannst dieses Makro anpassen und mit der Abfrage des Kontrollkästchens verbinden.
Bei dem auto_open-Makro müsstest Du einfach die Zeile Sub auto_open() in Sub irgendwas() ändern.
Gruß
Günter
Deine letzte Frage habe ich nicht so ganz verstanden.
Allerdings habe ich jetzt ein Makro im INet gefunden, mit dem man Makros verändern kann.
Hier ist der Code:
Option Explicit
'Ersetzt im Modul2 der aktiven Mappe die Zeile
'Windows("Formulare").Activate
'durch
'Windows("Formulare.xls").Activate
Sub ZeileInCodeErsetzen()
Dim strSuchtext As String, strNeuertext As String
Dim intI As Integer
'Nach dieser Zeile wird gesucht:
strSuchtext = "Windows(" & """" & "Formulare" & """" & ").Activate"
'... und durch diese Zeile ersetzt:
strNeuertext = "Windows(" & """" & "Formulare.xls" & """" & ").Activate"
'Jede Zeile in Modul2 wird durchsucht:
With ActiveWorkbook.VBProject.VBComponents("Modul2").CodeModule
For intI = 1 To .CountOfLines
'Wenn die Zeile gleich dem Suchtext ist, ...
If .Lines(intI, 1) = strSuchtext Then
'... Zeile löschen:
.DeleteLines intI
'... neue Zeile einfügen:
.InsertLines intI, strNeuertext
End If
Next
End With
End Sub
Sub Test()
Windows("Formulare").Activate
End Sub
Sub NochEinTest()
Windows("Formulare").Activate
End Sub
Sub UndNochEinTest()
Windows("Formulare.xls").Activate
End Sub
gefunden bei
http://www.excel-vba.de/makro.htm#ersetzen
Du kannst dieses Makro anpassen und mit der Abfrage des Kontrollkästchens verbinden.
Bei dem auto_open-Makro müsstest Du einfach die Zeile Sub auto_open() in Sub irgendwas() ändern.
Gruß
Günter
Antwort 5 von Michael10
Hallo Günter,
ich muß leider zu gestehen das du meine VBA Kenntnisse überschätz.
Es ist nett von dir das du dir die Mühe gemacht hast dises Makro zu finden, aber leider versteh ich nicht, was ich damit machen soll bzw. kann.
Nochmal die Sache mit dem Kontrollkästchen also ich meinte ein solches Kästchen liefert in einer ihm zu gewiesenen Zelle den Wert "Wahr" oder "Falsch" je nach dem ob das Häckchen gesetzt ist oder nicht aber das weißt du sicher.
Nun meinte ich das das von mir gewünschte Makro diese Zelle mit dem "Wahr" oder "Falsch" abfragen könnte, aber ohne das das Makro mit dem Befehl "Sheets"Tabelle1 auf diese Seite springt, falls das überhaupt möglich ist.
Ich hoffe ich habe mich jetzt etwas verständlicher Ausgedrückt.
Vielleicht fällt ja dir oder wenn anders noch was dazu ein.
Gruß Michael.
ich muß leider zu gestehen das du meine VBA Kenntnisse überschätz.
Es ist nett von dir das du dir die Mühe gemacht hast dises Makro zu finden, aber leider versteh ich nicht, was ich damit machen soll bzw. kann.
Nochmal die Sache mit dem Kontrollkästchen also ich meinte ein solches Kästchen liefert in einer ihm zu gewiesenen Zelle den Wert "Wahr" oder "Falsch" je nach dem ob das Häckchen gesetzt ist oder nicht aber das weißt du sicher.
Nun meinte ich das das von mir gewünschte Makro diese Zelle mit dem "Wahr" oder "Falsch" abfragen könnte, aber ohne das das Makro mit dem Befehl "Sheets"Tabelle1 auf diese Seite springt, falls das überhaupt möglich ist.
Ich hoffe ich habe mich jetzt etwas verständlicher Ausgedrückt.
Vielleicht fällt ja dir oder wenn anders noch was dazu ein.
Gruß Michael.
Antwort 6 von Guenter
Hallo,
wenn das Kontrollkästchen den Wert wahr/falsch in eine Zelle schreibt, dann kann das Makro den Wert dieser Zelle prüfen. Das Makro muss aber natürlich die Tabelle aufsuchen, in der dieser Wert steht. Das ist aber nicht weiter schlimm, es passiert ja dabei nichts, außer dass die Zelle abgefragt wird.
Warum darf das Makro nicht in die Tabelle "springen"?
Gruß
Günter
wenn das Kontrollkästchen den Wert wahr/falsch in eine Zelle schreibt, dann kann das Makro den Wert dieser Zelle prüfen. Das Makro muss aber natürlich die Tabelle aufsuchen, in der dieser Wert steht. Das ist aber nicht weiter schlimm, es passiert ja dabei nichts, außer dass die Zelle abgefragt wird.
Warum darf das Makro nicht in die Tabelle "springen"?
Gruß
Günter
Antwort 7 von rolanda
hallo,
erstelle in z.b. tabelle1 ein kontrollkästchen aus dem menü format, zellenverknüpfung "A1"
und folgendes vba
Sub auto_open()
Dim merk As String
Sheets("Tabelle1").Select
merk = Range("A1").Value
If merk = "Wahr" Then
Exit Sub
End If
MsgBox "Hallo"
End Sub
gruß
roland
erstelle in z.b. tabelle1 ein kontrollkästchen aus dem menü format, zellenverknüpfung "A1"
und folgendes vba
Sub auto_open()
Dim merk As String
Sheets("Tabelle1").Select
merk = Range("A1").Value
If merk = "Wahr" Then
Exit Sub
End If
MsgBox "Hallo"
End Sub
gruß
roland
Antwort 8 von Michael10
Hallo noch mal,
also danke Rolanda,dein Makro funzt aber es springt halt bei jedem öffnen auf die Seite "Tabelle1" und das ist genau das was ich nicht will, da es sich um eine Tabelle handelt die über 70 Seiten hat, will ich beim wieder öffnen, wieder auf die Seite in der ich zuletzt gearbeitet habe.
Vielleicht hat ja noch wer eine Idee.
Gruß Michel
also danke Rolanda,dein Makro funzt aber es springt halt bei jedem öffnen auf die Seite "Tabelle1" und das ist genau das was ich nicht will, da es sich um eine Tabelle handelt die über 70 Seiten hat, will ich beim wieder öffnen, wieder auf die Seite in der ich zuletzt gearbeitet habe.
Vielleicht hat ja noch wer eine Idee.
Gruß Michel
Antwort 9 von coros
Hallo Michael,
lösche in dem Makro die Zeilen
Sheets("Tabelle1").Select
merk = Range("A1").Value
und füge statt dessen nachfolgende Zeile an deren Stelle ein.
merk = Sheets("Tabelle1").Range("A1").Value
Das beim Ausführen des Makros immer die Tabelle1 aufgerufen wurde, liegt daran, dass diese immer aufgerufen wurde. Mit der geänderten Zeile wird der Inhalt der Zelle A1 in Tabelle direkt abgefragt.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
lösche in dem Makro die Zeilen
Sheets("Tabelle1").Select
merk = Range("A1").Value
und füge statt dessen nachfolgende Zeile an deren Stelle ein.
merk = Sheets("Tabelle1").Range("A1").Value
Das beim Ausführen des Makros immer die Tabelle1 aufgerufen wurde, liegt daran, dass diese immer aufgerufen wurde. Mit der geänderten Zeile wird der Inhalt der Zelle A1 in Tabelle direkt abgefragt.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
Antwort 10 von Michael10
Hallo Oliver,
vielen Dank mal wieder für die tolle Hilfe genau das was ich gebraucht habe.
Gruß Michael
vielen Dank mal wieder für die tolle Hilfe genau das was ich gebraucht habe.
Gruß Michael
Antwort 11 von coros
Hi Michael,
freut mich, dass ich auch einen kleinen Beitrag zur Lösung Deines Problems beitragen konnte. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll aber alle machen mit.
freut mich, dass ich auch einen kleinen Beitrag zur Lösung Deines Problems beitragen konnte. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll aber alle machen mit.