Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Kontrollkästchen einfügen
Sue
Hallo Zusammen
Sitze nun schon 2h vor dem Problem, einem bestimmten markierten Bereich (z.B. Zellen L13 bis L25) Kontrollkästchen "einzufügen".
Ich komme leider auch mit Hilfe der geschriebenen Beiträge nicht weiter, da die selektierten Zellen dauernd ändern können. Das ganze also dynamisch sein muss.
Kann mir bitte jemand weiterhelfen - die Kontrollkästchen haben nur die Funktion, dass sie "angekreuzt" werden (visuell), d.h. keine Auslösung eines Makros etc.
Ich danke Euch herzlich
Sue
AW: Kontrollkästchen einfügen
07.04.2010 12:36:02
F1
Das geht sinnvoll nur mittels Makro.
AW: Wie meinst Du das?
07.04.2010 12:46:59
JOWE
Hallo Sue,
verstehe die Frage nicht.
Kontrollkästchen kannst Du doch über die Steuerelement-Toolbox der Symbolleiste 'Visual Basic' einfügen soviel und wo immer Du willst.
Gruß,
Jochen
AW: Wie meinst Du das?
07.04.2010 13:11:57
Sue
Hallo
Ja, mir war klar, dass dies nur mit einem Makro möglich ist - nur wie?
@Jochen
Die Menge ist das Problem - es entstehen pro "Ablauf" bis zu 150 Register, welche bis zu 60 Kontrollkästchen enthalten. Das ist für einen manuelle Abhandlung einfach zuviel.
Also:
Ich müsste einfach markierten Zellen (z.B. L13 bis L34) je ein Kontrollkästchen hinzufügen. Die Position ist aber jeweils pro Register unterschiedlich oder genauer - die Spalte ist gleich, jedoch die Anzahl und Position der Zeilen unterschiedlich.
Die Umschaltung habe ich im Griff, d.h. ich müsste wirklich nur einem zuvor definiertem Bereich die Kästchen hinzufügen.
Alles klar? Kann mir jemand weiterhelfen?
Grüsse bis später
Sue
Anzeige
AW: Wie meinst Du das?
07.04.2010 14:50:22
JOWE
Hallo Sue,
hier mal dynamisch (im markierten Bereich werden in der Spalte L die Kästchen gesetzt):
Sub Bereiche()
Dim i, ersteZe, letzteZe, SP As Integer
Dim rngArea As Range
SP = 12 'anpassen, in welcher Spalte soll das Ankreuzkästchen stehen
For Each rngArea In Selection.Areas
ersteZe = rngArea(1).Row
letzteZe = rngArea(rngArea.Cells.Count).Row
Next
With ActiveSheet
For i = ersteZe To letzteZe
.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=.Cells(i, SP).Left, _
Top:=.Cells(i, SP).Top, Width:=18, Height:=10).Select
Next
.[A1].Select
End With
End Sub
löschen der Kästchen mit:
Sub DelShapes()
Dim i As Integer
With ActiveSheet
For i = 1 To .Shapes.Count
.Shapes(i).Delete
Next
End With
End Sub

Gruß
Jochen
Anzeige
evtl. so ...
07.04.2010 13:23:27
Matthias
Hallo
Userbild
Sorry für den Schreibfehler im Bild [runterkopieren]
Gruß Matthias
AW: evtl. so ...
07.04.2010 13:43:03
Sue
Hallo Matthias
Ja, habe ich versucht - per Makro ist das aber nicht so einfach (Makrorecorder funktioniert jedenfalls nicht).
Danke
Sue
das geht doch händisch ohne VBA oT.
07.04.2010 13:49:39
Matthias
AW: das geht doch händisch ohne VBA oT.
07.04.2010 13:52:21
Sue
Matthias?
Klar, wie beschrieben - die Menge ist das Problem.
Weisst Du weiter?
Sue
AW: Nicht die beste Lösung, aber ...
07.04.2010 14:13:29
Dieter(Drummer)
Hi Sue,
hier mal ein Makro (per Makrorekorder aufgezeichnet) als Ansatz:
  • 
    Sub Kontroll()
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
    DisplayAsIcon:=False, Left:=23.25, Top:=2.25, Width:=12.75, Height:=9 _
    ).Select
    ActiveSheet.Shapes("CheckBox1").Select
    Selection.Copy
    Range("A2:A5").Select
    ActiveSheet.Paste
    Range("A3").Select
    ActiveSheet.Paste
    Range("A4").Select
    ActiveSheet.Paste
    Range("A5").Select
    ActiveSheet.Paste
    End Sub
    

  • Hier werden Kontrollkästchen in A1 bis A5 eingefügt. Wenn Du das für die Spalten L haben willst, musst Du statt A eben L einsetzen. Wenn Du dies für mal L13 bis L18 und ein anders mal für andere Spalten und oder Zeilen brauchst, kann Dir nur ein VBA Spezialist im Forum helfen! Sondt m,üssetn Du ben das Makro jedesmal selbst anpassen.
    Dieter(Drummer)
    Dieter(Drummer)
    Anzeige
    mal ein wenig optimiert ...
    07.04.2010 14:28:44
    Matthias
    Hallo
    Sub bearbeitet()
    Dim x As Long
    Application.ScreenUpdating = False
    For x = 1 To 40 'zeile 1-40 
     ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=Cells(x, 2).Left, Top:=Cells(x, 2).Top, Width:=Cells(x, 2).Width / 2, Height:=Cells(x, 2).Height).Activate
    Next
    Application.ScreenUpdating = True
    End Sub
    
    Gruß Matthias
    Anzeige
    AW: mal ein wenig optimiert ...
    07.04.2010 14:56:34
    Sue
    Hallo Matthias
    Habe nochmals ein wenig (sehr lange) herumgestöbert.
    Werde wahrscheinlich von der Kontrollbox absehen und eine Liste integrieren - die Checkboxen scheinen nicht so flexibel wie gewünscht.
    Jedenfalls, ich danke Dir für Deine bisherige Hilfe.
    Grüsse
    Sue
    AW: mal ein wenig optimiert ...
    07.04.2010 15:59:06
    fcs
    Hallo Sue,
    Hier nochmals eine Variante zum Einfügen von Checkboxen, wobei auch Optionen für LinkedCell etc. einstellbar sind.
    Einfacher zu handhaben und Flexibler sind aber Datengültigkeitsprüfungen mit Drop-Down-Auswahl wie J/N, Ja/Nein oder X/nichts.
    Gruß
    Franz
    Sub Test1()
    Call Checkboxen_Einfuegen(Bereich:=Worksheets("Tabelle1").Range("L12:L25"), _
    bDrucken:=True, bLinkedCell:=True)
    End Sub
    Sub Checkboxen_Einfuegen(Bereich As Range, _
    Optional bDrucken As Boolean = True, _
    Optional bLinkedCell As Boolean = False)
    Dim Zelle As Range, wks As Worksheet, oShape As Shape
    For Each Zelle In Bereich
    Set oShape = Bereich.Parent.Shapes.AddFormControl(Type:=xlCheckBox, _
    Left:=Zelle.Left + 1, Top:=Zelle.Top + 1, Width:=20, Height:=12)
    oShape.TextFrame.Characters.Text = ""
    oShape.ControlFormat.PrintObject = bDrucken
    If bLinkedCell = True Then
    oShape.ControlFormat.LinkedCell = "'" & Zelle.Parent.Name & "'!" & Zelle.Address
    Zelle.Value = False
    End If
    Next
    End Sub
    

    Anzeige
    AW: mal ein wenig optimiert ...
    08.04.2010 10:07:03
    Sue
    Hallo Franz
    Besten Dank für Deine Lösung.
    Ich habe das Makro kurz getestet und werde nun versuchen, meinen markierten Bereich ins Sub Test1 zu integrieren - müsste ich eigentlich schaffen.
    Dann sollte eigentlich die gewünschte Abhandlung möglich sein.
    Lieben Dank für Deine Hilfe, es grüsst Dich
    Sue

    182 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige