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

counter-funktion für makros? nur einmal ausführen!

Forumthread: counter-funktion für makros? nur einmal ausführen!

counter-funktion für makros? nur einmal ausführen!
Ulf
Hi,
bei aktivierung von einem blatt wird folgender makro gestartet:

Private Sub Worksheet_Activate()
Mldg = "blabla"
Stil = vbInformation
Titel = "Instructions"
Antwort = MsgBox(Mldg, Stil, Titel)
End Sub

wie kann ich diesen nur einmal ausführen lassen,wenn ich ein weiteres mal diese blatt aktiviere?
gibt es sowas wie eine counter-funktion für makros?
danke
uLf
Anzeige
AW: counter-funktion für makros? nur einmal ausführen!
soendi
ja... klar
schreib eine 0 in irgend eine zelle (annahme: A1)

Private Sub Worksheet_Activate()
If Range("A1")<>0 Then Exit Sub
Mldg = "blabla"
Stil = vbInformation
Titel = "Instructions"
Antwort = MsgBox(Mldg, Stil, Titel)
Range("A1").Value = 1
End Sub

geht natürlich auch mit anderen sachen, wie buchstaben, etc...
gruss
soendi
Anzeige
he he, warum kompliziert wenns auch... THX
Ulf
genial einfach
AW: he he, warum kompliziert wenns auch... THX
soendi
geht natürlich auch mit 2 mal anzeigen...
am anfang if range > 2 then exit sub...
dann machst du einen zähler und am schluss sagst du i = i+1
danke für die rückmeldung!
gruss
soendi
das interessiert mich un doch
Ulf
wo ist grad der haken?

Private Sub Worksheet_Activate()
If Range("A1") > 2 Then Exit Sub
Mldg = "blabla"
Stil = vbInformation
Titel = "Instructions"
Antwort = MsgBox(Mldg, Stil, Titel)
i = i + 1
Range("A1").Value = i
End Sub

Anzeige
AW: das interessiert mich un doch
05.04.2004 16:24:22
soendi
hallo...
du musst ihm zuerst sagen, was i ist...

Private Sub Worksheet_Activate()
i = Range("A1").Value 'am anfang noch bei 0!
If i > 2 Then Exit Sub
Mldg = "blabla"
Stil = vbInformation
Titel = "Instructions"
Antwort = MsgBox(Mldg, Stil, Titel)
i = i + 1
Range("A1").Value = i
End Sub

gruss
soendi
Anzeige
AW: das interessiert mich un doch
Nepumuk
Halo Ulf,
der Haken ist der, wenn du die Mappe speicherst und wieder öffnest, kommt die Meldung nicht mehr, da in A1 schon was drin steht. Wenn eine Meldung dauerhaft nicht mehr angezeigt werden soll, dann schreib einen Eintrag in die Registry. Wenn die Meldung Nach dem öffnen der Mappe nur einmal angezeigt werden soll, dann deklariere eine öffentliche Variable, die du in dem Meldungmakro abfrägst und nach der Meldung einen Wert zuweist.
Beispiel: https://www.herber.de/bbs/user/4964.xls
Gruß
Nepumuk
Anzeige
AW: das interessiert mich un doch
Ulf
hatte das nun so gelöst, dass beim start die zählzelle den wert 0 bekommt
aber deine variante ist eleganter!
kann man hier auch ein zählfunktion einbauen?
also max. 3 mal einblenden
AW: das interessiert mich un doch
Nepumuk
Hallo Ulf,
man kann, frau auch. Ändere die Variable in Modul1 so:
Public bytgemeldet As Byte
und das Makro in Tabelle2 so:


Private Sub Worksheet_Activate()
    If bytgemeldet < 3 Then
        MsgBox "blabla", 64, "Instructions"
        bytgemeldet = bytgemeldet + 1
    End If
End Sub


Gruß
Nepumuk
Anzeige
AW: das interessiert mich un doch
06.04.2004 09:30:01
uLf
THX
wird zeit, dass ich nen vba-kurs bekomme, damit ich nicht nur lesen, sondern auch richtig schreiben kann
u.
Anzeige
Anzeige

Infobox / Tutorial

Excel Counter für Makros: Einmalige Ausführung


Schritt-für-Schritt-Anleitung

Um einen Excel Counter zu erstellen, der eine bestimmte Aktion nur einmal ausführt, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen. Hier nutzen wir VBA:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das Arbeitsblatt aus, für das du das Makro erstellen möchtest.

  3. Füge den folgenden Code in das Worksheet-Modul ein:

    Private Sub Worksheet_Activate()
        If Range("A1").Value <> 0 Then Exit Sub
        MsgBox "blabla", vbInformation, "Instructions"
        Range("A1").Value = 1
    End Sub
  4. Schließe den VBA-Editor und teste das Makro, indem du das Arbeitsblatt aktivierst.

Dieser Code sorgt dafür, dass die Nachricht nur einmal angezeigt wird, solange der Wert in Zelle A1 0 ist.


Häufige Fehler und Lösungen

  • Fehler: Die Nachricht wird mehrmals angezeigt, obwohl sie nur einmal erscheinen sollte. Lösung: Stelle sicher, dass du den Wert in Zelle A1 korrekt überprüfst und setze ihn nach der Anzeige der Nachricht auf 1.

  • Fehler: Nach dem Speichern und Öffnen der Datei wird die Nachricht nicht mehr angezeigt. Lösung: Du kannst die Zelle A1 beim Öffnen der Datei auf 0 zurücksetzen, um die Nachricht erneut anzuzeigen.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, einen Excel VBA Counter zu implementieren. Eine alternative Methode ist die Verwendung einer öffentlichen Variable:

  1. Füge den folgenden Code in ein Modul ein:

    Public bytgemeldet As Byte
  2. Ändere den Code im Worksheet-Modul wie folgt:

    Private Sub Worksheet_Activate()
        If bytgemeldet < 3 Then
            MsgBox "blabla", vbInformation, "Instructions"
            bytgemeldet = bytgemeldet + 1
        End If
    End Sub

Diese Methode ermöglicht es dir, die Nachricht bis zu drei Mal anzuzeigen.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung des VBA Counters:

  1. Einmalige Anzeige: Nutze den ersten Code, um eine einmalige Nachricht beim Aktivieren des Arbeitsblatts zu zeigen.
  2. Maximale Anzahl von Anzeigen: Verwende die zweite Methode, um die Nachricht bis zu drei Mal anzuzeigen und dann nicht mehr.
  3. Erweiterte Funktionen: Du kannst die Logik anpassen, um z.B. verschiedene Nachrichten anzuzeigen, abhängig davon, wie oft das Arbeitsblatt aktiviert wurde.

Tipps für Profis

  • Globale Variablen: Überlege, ob du globale Variablen nutzen möchtest, um Zustände zwischen verschiedenen Arbeitsblättern zu speichern.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme zu vermeiden.
  • Dokumentation: Kommentiere deinen Code, um später leichter nachvollziehen zu können, was jeder Teil des Codes bewirken soll.

FAQ: Häufige Fragen

1. Wie kann ich einen Excel Counter erstellen, der mehrmals ausgeführt wird? Du kannst die Bedingung im Code so anpassen, dass die Nachricht bei jedem Aktivieren des Arbeitsblatts angezeigt wird oder eine Zählvariable verwenden.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, die grundlegende VBA-Syntax sollte in den meisten modernen Excel-Versionen (2010 und höher) funktionieren.

3. Was mache ich, wenn ich die Nachricht nach dem Schließen der Datei wieder sehen möchte? Setze den Wert in Zelle A1 beim Öffnen der Datei auf 0 zurück, um die Nachricht erneut anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige