Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro nur für bestimmten Bereich anwenden

Makro nur für bestimmten Bereich anwenden
05.12.2005 12:02:10
Anja
Hallo Leute,
ich möchte gern ein Makro ausführen (Kommentar hinzufügen) aber nur in einem bestimmten Zellenbereich ("F10:AJ:87"), denn der andere Bereich ist geschützt. Dummerweise wird das Makro trotzdem auf den geschützten Zellen ausgeführt und das will ich verhindern. Habt ihr ne Idde wie der Code lauten muß?
Mein erster versuch war das Blatt so zu schützen, das nur bestimmte Zellen anklickbar sind, aber sobald ich die Datei schließe und wieder öffne, ist der Bereich zwar noch geschützt aber wieder anklickbar.
Mein bisheriges Makro lautet wie folgt (Das ist der Code der sich hinter dem OK-Button einer Userform verbirgt, die ich vorher aufrufe:

Private Sub OK_Click()
Dim Zelle As Range
For Each Zelle In Selection
Zelle.AddComment
Zelle.Comment.Text Text:=TextBox1.Value
Zelle.Comment.Shape.TextFrame.Characters.Font.Size = 11
Zelle.Comment.Shape.TextFrame.AutoSize = True
Next Zelle
Unload Userform1
End Sub

Ich hoffe das mir jemand helfen kann, bin noch ziemlich am anfang der VBA-Welt.
Danke Gruß Anja
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro nur für bestimmten Bereich anwenden
05.12.2005 12:47:26
Dani
Hallo Anja,
wenn ich dich richtig verstanden habe sollte folgendes funktionieren:

Private Sub OK_Click()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Tabelle1.Range("F10:AJ87")
For Each Zelle In Bereich
Zelle.AddComment
Zelle.Comment.Text Text:=TextBox1.Value
Zelle.Comment.Shape.TextFrame.Characters.Font.Size = 11
Zelle.Comment.Shape.TextFrame.AutoSize = True
Next Zelle
Unload UserForm1
End Sub

Ich hoffe das hilft dir weiter
Gruss
Daniel
Anzeige
AW: Makro nur für bestimmten Bereich anwenden
05.12.2005 13:01:07
Anja
Hallo Daniel,
danke erstmal, funktioniert.
noch ne weitere Frage dazu: kann ich z. b. auch das machen:
Dim Bereich as Range
Set Bereich = Union(Range("F10:AJ11"), Range("F13:AJ:30"), Range("F13:AJ:14"), Range("F16:AJ:19"),ActiveCell)
If Intersect(Bereich) Is Nothing Then
MsgBox "Ungültiger Bereich"
Else
...mein makro...
end if
(Es soll geschaut werden, ob die aktive Zelle(n) im gültigen Bereich liegen)
aber das allerwichigste: ich würde das "Dim und Set" gern mit Public o.ä. an Anfang vom Modul setzen, damit ich es nicht in jedem Makro mit hineinschreiben muß, sonst wird es ja nie ferig mit rechnen. Hab nämlich mehrere Makro´s davon ;-) geht das?
danke schon mal im Voraus
gruß Anja
Anzeige
AW: Makro nur für bestimmten Bereich anwenden
05.12.2005 13:45:31
Dani
Hallo Anja,
kleine Anmerkung - Range Angaben erfolgen immer nach dem Muster "A10:AJ200" also immer nur ein Doppelpunkt zwischen oben links und unten rechts. Dein Ansatz sieht gut aus habs noch etwas abgeändert. Du musst die Aktivierten Zellen speichern und erst zuletzt vergleichen. Die Deklaration der Range Variablen kannst du in einem eigenen Modul als Public machen so stehen sie für alle Makros zur verfügung:
Option Explicit
Public Bereich As Range
Public OldRange As Range
Der Code sieht bei mir jetzt so aus:

Private Sub OK_Click()
Set OldRange = ActiveCell
Set Bereich = Application.Union(Tabelle1.Range("F10:AJ11"), Tabelle1.Range("F13:AJ30"), Tabelle1.Range("F13:AJ14"), Tabelle1.Range("F16:AJ19"))
If Application.Intersect(Bereich, OldRange) Is Nothing Then
MsgBox "Ungültiger Bereich"
Else
MsgBox "Das Makro startet"
End If
End Sub

Ich hoffe es hilft
Gruss
Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro nur für bestimmten Bereich anwenden


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf deinen Projektordner, gehe zu Einfügen und wähle Modul.

  3. Deklariere die Variablen: Füge den folgenden Code am Anfang deines Moduls ein, um die Bereiche global verfügbar zu machen:

    Option Explicit
    Public Bereich As Range
    Public OldRange As Range
  4. Erstelle das Makro: Füge den folgenden Code in dein Modul ein, um das Makro zu erstellen, das nur im angegebenen Bereich Kommentare hinzufügt:

    Private Sub OK_Click()
       Set OldRange = ActiveCell
       Set Bereich = Application.Union(Tabelle1.Range("F10:AJ11"), Tabelle1.Range("F13:AJ30"), Tabelle1.Range("F13:AJ14"), Tabelle1.Range("F16:AJ19"))
       If Application.Intersect(Bereich, OldRange) Is Nothing Then
           MsgBox "Ungültiger Bereich"
       Else
           MsgBox "Das Makro startet"
           Dim Zelle As Range
           For Each Zelle In Bereich
               Zelle.AddComment
               Zelle.Comment.Text Text:=TextBox1.Value
               Zelle.Comment.Shape.TextFrame.Characters.Font.Size = 11
               Zelle.Comment.Shape.TextFrame.AutoSize = True
           Next Zelle
           Unload UserForm1
       End If
    End Sub
  5. Teste dein Makro: Schließe den VBA-Editor und teste dein neues Makro in Excel.


Häufige Fehler und Lösungen

  • Problem: Makro wird auf geschützten Zellen ausgeführt.

    • Lösung: Stelle sicher, dass du nur den gewünschten Bereich in deiner Union-Anweisung angibst und verwende Application.Intersect, um festzustellen, ob die aktive Zelle im gültigen Bereich liegt.
  • Problem: Zellen sind nach dem Schließen und Öffnen der Datei wieder bearbeitbar.

    • Lösung: Überprüfe die Einstellungen für den Blattschutz. Du kannst den Schutz so einstellen, dass nur bestimmte Zellen bearbeitet werden können.

Alternative Methoden

Eine Alternative zum Hinzufügen von Kommentaren ist die Verwendung von Notizen. Diese können ebenfalls über VBA verwaltet werden. Hier ist ein einfacher Code, um eine Notiz hinzuzufügen:

Zelle.NoteText Text:=TextBox1.Value

Diese Methode bietet eine andere Möglichkeit, Informationen in Zellen zu speichern, und könnte für dein Projekt nützlich sein.


Praktische Beispiele

Ein praktisches Beispiel könnte die Verwendung des Makros in einem Projektmanagement-Tool sein, wo du den Fortschritt von Aufgaben in einem bestimmten Zellbereich dokumentieren möchtest. Du kannst das Makro so anpassen, dass es nur in den Zellen für den aktuellen Monat Kommentare hinzufügt.


Tipps für Profis

  • Nutze die With...End With-Anweisung, um den Code leserlicher zu gestalten, insbesondere wenn du mehrere Eigenschaften eines Objekts änderst:

    With Zelle.Comment.Shape.TextFrame
      .Characters.Font.Size = 11
      .AutoSize = True
    End With
  • Halte deinen Code modular, indem du häufig verwendete Funktionen in separate Subroutinen auslagerst. So wird der Code leichter wartbar und wiederverwendbar.


FAQ: Häufige Fragen

1. Kann ich das Makro so anpassen, dass es nur in bestimmten Zellen funktioniert? Ja, du kannst die Range-Angaben in der Union-Anweisung ändern, um die genauen Zellen festzulegen, in denen das Makro aktiv sein soll.

2. Wie schütze ich ein Excel-Blatt, während ich Makros verwende? Du kannst den Blattschutz aktivieren, indem du im Menü Überprüfen auf Blatt schützen klickst. Stelle sicher, dass du die richtigen Optionen auswählst, um bestimmte Zellen bearbeitbar zu lassen.

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