2.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich hab gesucht und nichts gefunden :-(
habe eine UserForm durch die ich datensätze in eine Tabelle schreiben.
und wenn ein neuer datensatz dukommt, wollte ich in Spalte A und aktuelle (unterste) Zeile eine Checkbox eingebettet werden und diese auch in der Zeile 125 mit Checkbox125 benannt werden.

Kann mir jemand helfen, da ich die benennung nich hinbekomme.

Danke

8 Antworten

0 Punkte
Beantwortet von
habe folgendes gefunden.

Sub Checkbox()
Dim ooCheckBox As OLEObject

Z = 184
x = 1

With Worksheets("Catalog").Cells(Z, x)
Set ooCheckBox = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CheckBox.1", _
Left:=Worksheets("Catalog").Cells(Z, x).Left, _
Top:=Worksheets("Catalog").Cells(Z, x).Top, _
Width:=Worksheets("Catalog").Cells(Z, x).Width, _
Height:=Worksheets("Catalog").Cells(Z, x).Height)
With ooCheckBox.Object
.Caption = " "
.BackColor = vbWhite
End With
ooCheckBox.Name = "CheckBox" & Z
End With


End Sub

Problem ist nur, wie kann ich diese Boxen löschen oder, dass wenn schon eine in der Zelle vorhanden ist, dass keine mehr eingefügt werden muss.

Schön wäre es auch, wenn mir jemand sagen könnte, wie ich so eine Zelle Abfrage. Also Wenn die Zelle angeklickt ist, dann ....

Danke und viele Grüße
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Moliga,

mal eine kleine Beispieldatei, die Du Dir unter http://www.excelbeispiele.de/Beispiele_Supportnet/CheckBoxen_einfuegen.xls herunterladen kannst.

Das Makro "Nur_Test" ist nur für dieses Beispiel. Das eigentliche Makro ist das Makro "CheckBoxen_einfuegen".

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
schon mal vielen Dank..

und könntest du mir auch sagen, wie der code ausschaut, wenn ich erst schauen will, ob es eine Checkbox12 gibt . und wenn es eine gibt, dann eine weitere abfrage. Wenn die Checkbox12 aktiviert ist, dann in die gleiche zelle ja schreiben.

Vielen Dank
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo moliga,

wie soll es eine 2. CheckBox12 geben, wenn diese bereits in Zeile 12 eingefügt wurde? Das geht wohl nicht oder, da ja jede CheckBox den Namen "CheckBox" und Zeile, in der sie eingefügt wurde, erhält?


MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
ich brauche diese VBA für folgendes
In der Tabelle habe ich Datensätze die ich über eine Userform reinschreibe. Wenn immer ein neuer Datensatz dazukommt, soll davor eine Checkbox (aktiviert) eingefügt werden mit "Checkbox" & zeile.
Das funktioniert.

Wenn ich aber eine Zeile mal lösche, verschiebt sich alles eins nach oben und z.b. Zeile 25 hat dann in der Spalte A die Checkbox 26 usw.

und deshalb suche ich nach einer möglichkeit, dass wenn eine Zeile gelöscht ist, der Wert in der Checkbox zwar bleibt, aber der Name zu der Zelle angepasst wird.

Desweiteren will ich dann, dass wenn die Checkbox aktiviert ist, das makro dann die Celle(Z, 5) kopiert.

hoffe ich konnte dir meine Vorstellungen ungefähr erklären..

Grüße
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Moliga,

keine Ahnung, was genau Du erreichen möchtest, vor allem weil ich Deine Datei nicht kenne. Aber das kann mir ja auch egal sein und ich mache mir darüber keine Gedanken.
Nachfolgendes Makro macht das, was Du Dir vorstellst. Das Makro ist auf meine Beispieldatei aus AW2 bezogen.

Sub CheckBoxen_einfuegen()
Dim lngLastRow As Long
Dim lngRow As Long
Dim dblRowHeight As Double
Dim objCheckBox As OLEObject
Dim objOleObejkt As OLEObject
Dim bolObjektVorhanden As Boolean

bolObjektVorhanden = False
dblRowHeight = 0.75

lngLastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

For lngRow = 2 To lngLastRow
dblRowHeight = dblRowHeight + Cells(lngRow, 1).RowHeight
Next

For Each objOleObejkt In ActiveSheet.OLEObjects
If objOleObejkt.Name = "CheckBox" & lngLastRow Then
bolObjektVorhanden = True
If objOleObejkt.Object.Value = True Then Cells(lngLastRow, 1) = "Ja"
Exit For
End If
Next

If bolObjektVorhanden = False Then
Set objCheckBox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=Columns(1).ColumnWidth * 2.5, Top:=dblRowHeight, _
Width:=14.25, Height:=15)

objCheckBox.Name = "CheckBox" & lngLastRow

Set objCheckBox = Nothing
End If
End Sub


MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Vielen Dank für deine Mühe.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Moliga,

gerne geschehen. Danke auch für die Rückmeldung.

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