Supportnet Computer
Planet of Tech

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

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.

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.

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:

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.

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

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

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

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.

Antwort 10 von Michael10

Hallo Oliver,

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: