Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Checkbox





Frage

Hallo Leute, Da ich komplett ahnungslos bin, was Makros in MS Excel betrifft, hoffe ich auf eure Hilfe ;-) Ich möchte eine Tabelle anlegen, in der eine Spalte komplett mit Checkboxen bzw. Kontrollkästchen angelegt wird. Kann ich diesen Vorgang automatisieren, so dass ich das nicht für jede Zelle innherhalb dieser Spalte automatisch machen muss? Gibt es auch die Möglichkeit eines Makros, welches die geöffnete Datei nach 10 Minuten, nachdem die Datei nicht bearbeitet wurde, wieder schliesst? Ich danke Euch für Eure Antworten.

Antwort 1 von coros

Hi Excel-Neuling,

mit nachfolgendem Makro kannst Du automatisch 100 Checkboxen erzeugen lassen. Kopiere das Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Sub CheckBoxen_erzeugen()
Dim Wiederholungen As Long
Application.ScreenUpdating = False
For Wiederholungen = 1 To 100
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
Link:=False, DisplayAsIcon:=False, Left:=91.5, _
Top:=(Wiederholungen * 12.75) - 12.75, Width:=17.25, Height:= _
12).Activate
Next
End Sub



Wenn DU mehr oder weniger als 100 Boxen erzeugen möchtest, dann ändere die Zahl 100 gegen die Zahl wie viele Boxen erzeugt werden sollen. Wenn Du die Boxen an einer anderen Stelle oder in einem anderen Abstand erstellen lassen möchtest, musst Du die Zahlen hinter

Top, Height, Width und Left
Ändern. Probiere einfach mal ein bisschen mit den zahlen rum und Du wirst die Änderungen sehen.

Zu Deiner Frage mit dem Schließen einer Datei nach einer bestimmten Zeit, habe ich auf meiner HP in der Rubrik Beispieldateien ein Beispiel (Nummer 52) das Dir sicherlich helfen wird. Solltest Du nicht wissen, wie Du das obige Makro in Deine Datei bekommst, dann schau mal ebenfalls auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich auch helfen wird.

Ich hoffe, Du kommst klar. Bei Fragen oder Problemen melde Dich.

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 Excel-Neuling

Hallo Coros,

Vielen Dank für Deine Hilfe, das ist tatsächlich das, was ich gesucht habe!!!

Nichts desto trotz habe ich auf dieses Makro bezogen einige Fragen:
1. Wie kann man den Schriftzug rechts von der Checkbox entfernen, so dass nur die Box als solche zu erkennen ist?

2. Kann man dieses Makro so variieren, dass z. B. in Spalte B erst dann eine Checkbox "auftaucht" und dann anzuklicken ist, wenn vorher eine Eingabe in Spalte A vorgenommen wurde?

3. Leider lässt sich dein Beispiel 52 nicht öffnen. Folgende Fehlermeldung erscheint: "Ein Objekt konnte nicht geladen werden, da es auf diesem Computer nicht verfügbar ist."
Muss ich mir noch etwas installieren?
Schade eigentlich, denn der Beschreibung nach ist es, das was ich suche.....

Wäre Dir wegen weiterer Hilfe sehr dankbar........

Grüße,

Pug

Antwort 3 von coros

Hi Excel-Neuling!

Zu 1. und 2.: Nachfolgender Code fügt, wenn in Spalte A ein Eintrag getätigt wurde, in der gleichen Zeile in Spalte B eine CheckBox ohne CheckBoxbeschriftung ein. Kopiere den VBA-Code in das VBA Projekt der Tabelle, in dem die Checkboxen erzeugt werden sollen. Wie das geht findest Du wieder auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach.

Public Wert_vorhanden As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Box As OLEObject
Application.ScreenUpdating = False
MsgBox Wert_vorhanden
If Target.Column = 1 And Target.Cells <> "" And Wert_vorhanden = False Then
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
Link:=False, DisplayAsIcon:=False, Left:=91.5, _
Top:=(Target.Cells.Row * 12.75) - 11.3, Width:=17.25, Height:= _
12).Activate
For Each Box In ActiveSheet.OLEObjects
Box.Object.Caption = ""
Next
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Cells <> "" Then
Wert_vorhanden = True
Else
Wert_vorhanden = False
End If
End Sub



Zu 3. Da hast Du recht, da muss noch etwas installiert werden. Da ich das bei mir schon installiert habe, ist mir das beim Testen nicht aufgefallen, dass sowohl ein ActiveX-Steuerelement von Thomas Risi , als auch eine Laufzeitbibliothek von Microsoft vor dem ersten Starten der Datei, installiert werden muss. In meiner Datei habe ich zwar über das Installieren geschrieben, aber nicht dass das eben vorher geschehen muss. Ich muss dahingehend meine Homepageseite noch mal überarbeiten. Lade Dir also beides runter und installiere es. Die Meldung, die dann beim Start der Exceldatei erscheint, kannst Du mit OK bestätigen. Sollte es dann immer noch nicht funktionieren, dann melde Dich noch mal. Dann kann es sein, dass durch das Öffnen der Datei ohne die beiden oben beschriebenen Tools, das Aktive X Steuerelement gelöscht wurde und es wieder hinzugefügt werden muss. Dann schreibe ich Dir eine Anleitung wie Du das wieder einfügen kannst.

So, ich hoffe, Du kommst klar. Bei Fragen melde Dich.
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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: