Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro bei Zellwert ausführen





Frage

Hallo, ich habe eine Datei "Rechnung". In dieser Datei soll, wenn Zelle B14=1 ein Makro starten, dass die Zellen D16-D52 sperrt und gleichzeitig die Zellen F16-F52 frei gibt, bei B14=0 genau anders herum. Die Zellen sind im gesperrten Zustand grau und im offenen Zustand weiß. Geht so etwas? Vielen Dank Rasful

Antwort 1 von coros

Moin Rasful,

nachfolgenden Code kopiere in das VBA-Projekt des Tabellenblatts, in dem die Zellen gesperrt werden sollen.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Me.Unprotect ""
If Range("B14") = 1 Then
With Range("D16:D52")
     .Interior.ColorIndex = 15
     .Locked = True
End With
With Range("F16:F52")
     .Interior.ColorIndex = x1None
     .Locked = False
End With
Else
With Range("D16:D52")
     .Interior.ColorIndex = x1None
     .Locked = False
End With
With Range("F16:F52")
     .Interior.ColorIndex = 15
     .Locked = True
End With
End If
Me.Protect ""
Application.EnableEvents = True
End Sub


Bei diesem Code wird wenn in Zelle B14 eine 1 steht, der Bereich D16:D52 für Eingaben gesperrt und der Zellhintergrund wird grau. Der Bereich F16:F52 wird freigegeben und der graue Hintergrund wird aufgehoben. Damit der Code einwandfrei funktioniert, muss das gesamte Blatt, also alle Zellen, markiert werden und unter Zellen formatieren, Registerkarte Schutz muss der Haken bei Gesperrt entfernt werden.

Da ich nicht weiß, ob Du Dich mit VBA (Visual Basic) auskennst, kommt hier eine kurze Anweisung, wie Du den Code in Deine Tabelle bekommst.

1. Markiere die Anweisung aus diesem Beitrag und Kopiere (Strg c) diesen.

2. Klicke in Deiner Exceldatei in der Menüleiste nacheinander auf Extras => Makro => Visual Basic Editor oder drücke die Tastenkombination Alt F11

3. In dem neu geöffneten Fenster suche auf der linken Seite nach dem Eintrag VBA Projekt(Hier der Name Deiner Tabelle)

4. Klicke danach in dem linken Fenster auf den Eintrag Tabelle1(Dein Tabellenname) oder Tabelle2(Dein Tabellenname),bzw die Tabelle, in dem der Code wirken soll.

5. Füge nun die vorher kopierte Anweisung in das rechte leere Fenster ein.

Du solltest zum Abschluss noch die Sicherheitseinstellung, die beim Öffnen der Datei abgefragt wird, kontrollieren. Klicke dazu nacheinander in der Menüleiste wieder auf Extras => Makro und dann auf Sicherheit.... Gehe, falls nicht schon angezeigt, auf die Registerkarte Sicherheitsstufe und schaue dort nach, ob die Einstellung Mittel aktiviert ist. Wenn nicht, aktiviere diese Einstellung, da sonst der Code nicht ausgeführt werden kann. Beim nächsten Öffnen Deiner Datei kommt eine Abfrage, ob Makros aktiviert oder deaktiviert werden sollen. Klicke auf aktivieren und der Code wird ausgeführt.

Ich hoffe, Du kommst klar. Bei Problemen melde Dich noch mal. Wenn Du mit der obigen Anleitung nicht richtig zurecht kommst, dann schau mal
hier
und dann in der Rubrik VBA Anleitungen nach. Da habe ich die selbe Beschreibung noch mal in bebilderter Form.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Rasful

Hallo coros,
ich habe deine anweisungen aufs genaueste befolgt, aber es klappt nicht. wenn ich das makro im vba-modus aufrufen will, wird nach dem namen des makros verlangt, aber da steht kein name. wenn ich einen namen eingeben will, wird ein neuer SUB-Abschnitt erstellt, der aber leer ist. was mache ich falsch?
mfg
rasful

Antwort 3 von coros

Hi rasful,

Du kannst bzw. musst den Code nicht in der VBA Umgebung aufrufen. Der Code wird automatisch, jedesmal wenn Du einen Eintrag in Deiner Tabelle gemacht hast und den dann z.B. mit Return abschließt, ausgeführt. Hast Du mal in der Tabelle in Zelle B14 eine 1 oder eine andere Zahl eingegeben, dann müsste der Code automatisch ausgeführt werden.

Ich habe Dir mal eine Bespieldatei erstellt, die Du hier mit dem Namen Zellbereich in Abhaengigkeit eines Zellwertes sperren freigeben.xls herunterladen kannst.

Versuch das mal. Wenn es dann immer noch nicht funktioniert, dann melde Dich noch mal.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Rasful

hallo coros,
ich habe es getestet und, wie durch ein wunder, es klappt. mich stört an dem ganzen nur noch eine kleinigkeit und zwar, kann man da auch per makro noch einen rahmen für die freigegebenen zellen ( f16-f52 ) hinzufügen bzw. entfernen?
deine bespiel-dateien sind sehr lehrreich für mich. ich kann mir da viele anregungen holen bzw in meine bestehenden tabellen einfügen und somit viel arbeit und zeitaufwand ersparen, einfach klasse. vielen vieln dank.
hochachtungsvoll
rasful

Antwort 5 von coros

Hi Rasful,

lade Dir die Datei noch mal runter. Ich habe die Änderungen in der Datei vorgenommen.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Rasful

hallo coros,
juhui es hat geklappt. jetzt funktioniert es super, dank deiner hervorragenden hilfe. einfach genial. ich weiß zwar nicht, was in dem makro steht, aber es klappt.
vielen dank nochmal
gruß aus bayern
rasful