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

Makro nur in bestimmter Zeile zulassen

Forumthread: Makro nur in bestimmter Zeile zulassen

Makro nur in bestimmter Zeile zulassen
Werner
Hallo zusammen!
Auf der Taste F6 habe ich ein Makro abgelegt.
Ich möchte, dass der Anwender das Makro aber nur ausführen kann, wenn irgend eine Zelle im Bereich I5 bis AM5 angeklickt wurde.
Wenn er eine andere Zelle angeklickt und F6 gedrückt hat soll eine Meldung erscheinen, dass er erst eine der oben genannten Zellen anklicken soll.
Geht so was?
Gruß und Danke!
Werner
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Makro nur in bestimmtem Bereich zulassen
05.01.2010 15:46:45
NoNet
Hallo Werner,
hier ein Gerüst, wie Du das prüfen kannst :
Sub DeinMakro()
Dim rngBereich As Range
Set rngBereich = Range("I5:AM5") 'Hier den Bereich angeben !
If Intersect(ActiveCell, rngBereich) Is Nothing Then
MsgBox "Makro wird nicht ausgeführt : Bitte zuerst eine Zelle im Bereich " & _
rngBereich.Address(0, 0) & " anklicken !", vbCritical + vbOKOnly, _
"Fehlerhafte Zelle"
Else
'Hier Dein bisheriger Makro-Code !
End If
End Sub
Gruß, NoNet
Anzeige
AW: Makro nur in bestimmtem Bereich zulassen
05.01.2010 15:59:46
Werner
GENIAL!!!
Genau so soll es sein.
Danke!!!!
Gruß
Werner
AW: Makro nur in bestimmter Zeile zulassen
05.01.2010 15:47:32
Daniel
HI
if Intersect(ActiveCell, Range("I5:AM5")) Is Nothing then
Msgbox "Makro kann nicht ausgeführt werden ..."
else
' Hier deinen Makrocode einfügen
end if
Gruß, Daniel
Anzeige
Anzeige

Infobox / Tutorial

Makro nur in bestimmter Zeile zulassen


Schritt-für-Schritt-Anleitung

Um ein Makro so zu gestalten, dass es nur ausgeführt werden kann, wenn eine Zelle im Bereich I5 bis AM5 ausgewählt ist, befolge diese Schritte:

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

  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf einen beliebigen Ordner im Projektfenster klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Sub DeinMakro()
       Dim rngBereich As Range
       Set rngBereich = Range("I5:AM5") ' Hier den Bereich angeben
       If Intersect(ActiveCell, rngBereich) Is Nothing Then
           MsgBox "Makro wird nicht ausgeführt: Bitte zuerst eine Zelle im Bereich " & _
           rngBereich.Address(0, 0) & " anklicken!", vbCritical + vbOKOnly, "Fehlerhafte Zelle"
       Else
           ' Hier Deinen bisherigen Makro-Code einfügen
       End If
    End Sub
  4. Binde das Makro an die F6-Taste, indem Du im Menü auf "Extras" > "Makros" > "Makros" klickst, Dein Makro auswählst und "Optionen" wählst.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird immer ausgeführt, unabhängig von der gewählten Zelle.

    • Lösung: Überprüfe, ob der richtige Zellbereich in der Set rngBereich-Zeile definiert ist.
  • Fehler: Es erscheint keine Fehlermeldung, wenn eine falsche Zelle angeklickt wird.

    • Lösung: Stelle sicher, dass der Code in der Else-Bedingung korrekt implementiert ist und dass ActiveCell tatsächlich die aktive Zelle ist.

Alternative Methoden

Wenn Du eine alternative Methode zur Einschränkung der Makroausführung suchst, kannst Du die Worksheet_SelectionChange-Ereignisprozedur verwenden. Hier ein Beispiel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("I5:AM5")) Is Nothing Then
        MsgBox "Bitte eine Zelle im Bereich I5:AM5 auswählen, um das Makro auszuführen!"
    End If
End Sub

Diese Methode gibt eine sofortige Rückmeldung, wenn Du eine Zelle außerhalb des gewünschten Bereichs auswählst.


Praktische Beispiele

Angenommen, Du hast ein Makro, das bestimmte Daten verarbeitet und nur dann ausgeführt werden soll, wenn der Benutzer in der Zeile 5 arbeitet. Der folgende Code kombiniert die Validierung mit einer einfachen Datenverarbeitung:

Sub DeinMakro()
    Dim rngBereich As Range
    Set rngBereich = Range("I5:AM5")
    If Intersect(ActiveCell, rngBereich) Is Nothing Then
        MsgBox "Bitte zuerst eine Zelle im Bereich " & rngBereich.Address(0, 0) & " anklicken!"
    Else
        ' Datenverarbeitung hier
        MsgBox "Makro erfolgreich ausgeführt!"
    End If
End Sub

Dieser Code gibt dem Benutzer eine Bestätigung, dass das Makro erfolgreich ausgeführt wurde.


Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler zu vermeiden und Fehler zu reduzieren.
  • Verwende das With-Statement, um den Code übersichtlicher zu gestalten, wenn Du mehrfach auf dasselbe Objekt zugreifst.
With ActiveCell
    ' Deine Operationen hier
End With
  • Halte Deinen Code modular, indem Du Funktionen erstellst, die spezifische Aufgaben übernehmen. So wird der Code leichter wartbar.

FAQ: Häufige Fragen

1. Wie kann ich das Makro in einer anderen Zeile anwenden?
Du kannst den Bereich in der Set rngBereich-Zeile anpassen, z.B. Range("A10:D10").

2. Was passiert, wenn ich das Makro aus einer geschützten Datei ausführen möchte?
Du musst die Datei zuerst entsperren oder sicherstellen, dass die Makros auch in geschützten Arbeitsmappen ausgeführt werden dürfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige