Wo liegt der Fehler im Excel 2021 VBA-Code mit Choose und Range.Locked?

Antwort

Der Fehler in deinem VBA-Code liegt daran, dass die Variable `rge` nicht deklariert wurde. In VBA solltest du Variablen immer deklarieren, und für Zellbereiche ist der Typ `String` oder besser gleich `Range` geeignet. Außerdem ist es besser, die Variable als `String` zu deklarieren, wenn du sie als Adress-Text verwendest. Hier ist die korrigierte Version: ```vba Dim i As Integer Dim rge As String For i = 1 To 4 rge = Choose(i, "F5:L200", "D5:D6", "C13:D14", "C16:D17") Range(rge).Locked = True Next i ``` **Weitere Hinweise:** - Wenn du `Option Explicit` verwendest (was empfohlen wird), ist die Deklaration zwingend. - Falls du mit mehreren Arbeitsblättern arbeitest, solltest du das Arbeitsblatt explizit angeben, z.B. `Worksheets("Tabelle1").Range(rge).Locked = True`. **Zusammengefasst:** Der Fehler ist die fehlende Deklaration der Variablen `rge`. Füge `Dim rge As String` am Anfang deines Codes hinzu.

Kategorie: Technologie Tags: Excel VBA Fehler
Neue Frage stellen

Verwandte Fragen

Warum funktioniert das Excel-Makro mit Dim zeilen as String, Choose und Rows(zeilen).Hidden = True nicht?

Der Fehler liegt daran, dass du die Variable `zeilen` als `String` deklarierst, aber die Funktion `Rows(zeilen).Hidden = True` einen Bereich erwartet, der als Zeilenreferenz interpretiert werden kann.... [mehr]

Wie kann man in Excel-VBA eine For-Next-Schleife vorzeitig beenden?

In Excel-VBA verlässt du eine For/Next-Schleife vorzeitig mit dem Befehl `Exit For`. Sobald dieser Befehl ausgeführt wird, wird die Schleife sofort beendet und der Code nach der Schleife for... [mehr]

Muss in einem Excel-Makro bei einem If-Block ein End If stehen, wenn vorher Exit Sub ausgeführt wird?

Ja, auch wenn innerhalb einer If-Anweisung in einem Excel-Makro (VBA) ein `Exit Sub` steht, muss das zugehörige `End If` trotzdem geschrieben werden. Die Syntax von VBA verlangt, dass jede mit `I... [mehr]

Warum kann ich nach einem Fehler im Excel-Makro keinen Makro mehr mit F8 starten?

Wenn ein Makro in Excel mit einem Fehler abbricht, kann es passieren, dass Excel in den "Fehlerbehandlungsmodus" (Debug-Modus) wechselt. In diesem Modus sind bestimmte Funktionen, wie das St... [mehr]

Wie kann ein Excel-Makro in allen Blättern, auch ausgeblendeten, das Gitternetz ausblenden?

Um in allen Arbeitsblättern einer Excel-Arbeitsmappe – auch in ausgeblendeten – das Gitternetz auszublenden, kannst du folgendes VBA-Makro verwenden: ```vba Sub GitternetzInAllenBlae... [mehr]

Wie kann man mit einem Excel-Makro in allen Blättern Gitternetzlinien und Überschriften ausblenden?

Hier ist ein VBA-Makro, das in allen Arbeitsblättern einer Excel-Arbeitsmappe sowohl die Gitternetzlinien als auch die Überschriften (Zeilen- und Spaltenköpfe) ausblendet: ```vba Sub G... [mehr]

Wie übergibt man zwei Variablen von einem Excel-Makro an ein anderes?

Um zwei Variablen von einem Excel-Makro an ein anderes zu übergeben, gibt es mehrere Möglichkeiten. Die gängigste und sauberste Methode ist, das zweite Makro als **Sub** oder **Function... [mehr]

Gilt Application.ScreenUpdating=false auch für aufgerufene Makros in Excel?

Ja, der Befehl `Application.ScreenUpdating = False` gilt global für die gesamte Excel-Anwendung und damit auch für alle Makros, die danach ausgeführt werden – unabhängig davo... [mehr]

Wie prüfe ich in einem Excel-Makro, ob das aktive Blatt Sheets("Projekt") ist?

Um in einem Excel-Makro (VBA) zu prüfen, ob das aktive Blatt das Blatt mit dem Namen "Projekt" ist, kannst du folgenden Code verwenden: ```vba If ActiveSheet.Name = "Projekt"... [mehr]

Warum tritt Fehler 400 auf, wenn ein Excel-Makro per Button gestartet wird, obwohl es schrittweise mit F8 funktioniert?

Der Fehler 400 in Excel-Makros ist ein allgemeiner Laufzeitfehler, der oft auftritt, wenn etwas im Code nicht wie erwartet funktioniert. Dass der Fehler nur beim Starten über den Button und nicht... [mehr]