Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
760to764
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
760to764
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Name der Checkbox in variable Zelle ausgeben
03.05.2006 11:43:47
edeltraud
Hallo Excel-Kollegen,
ich steck schon wieder fest und brauche Eure Hilfe.
Per Makro werden in ein Excelsheet mehrere Checkboxen in ganz bestimmte Zeilen gesetzt.
Jeder dieser Checkbox ist ein Wert zugeordnet.
Wenn jetzt der User eine Checkbox aktiviert, soll der Wert in das Sheet eingetragen werden und andersrum wieder entfernt werden, wenn die jeweilige Checkbox deaktiviert wird.
Da es bei jedem Makrostart unterschiedlich viele Checkboxen sein können (max. 50), kann ich mich nicht direkt auf den Namen beziehen.
Ich glaube, wenn ich es schaffen könnte, den Namen der grade eben erstellten Checkbox in mein Sheet mit den hinterlegten Werte in die entpsrechende Zeile zu packen, dann könnte ich mich später beim Anklicken der Boxen wieder drauf beziehen.
Aber ich kriegs einfach nicht hin, diesen Namen in diese variable Zelle zu setzen.
Habt Ihr einen Tipp für mich?
Hier ein Auszug aus meinem Makro, der das Erstellen der Boxen regelt:
'Checkbox erstellen
If systeme.Cells(zeileSysL, 7) = "x" Then
Dim WS As Worksheet
Dim rngZ As Range
Set WS = Application.Workbooks("Kalkulation.xls").Sheets("Blatt2") 'ActiveSheet
Set rngZ = WS.Cells(zeileblatt2, 3)
With WS.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
.Object.Caption = ""
.Height = rngZ.Height - 5
.Width = rngZ.Width / 5
.Top = rngZ.Top + (rngZ.Height - .Height) / 2
.Left = rngZ.Left + (rngZ.Width - .Width) / 2
End With
systeme.Cells(zeileSysL, 8) = Preise.Cells(zeilePreise, 5) 'Preis aus Preisliste
blatt2.Cells(zeileblatt2, 4) = 0
End If
'***
Ich würde gerne neben den Wert (systeme.cells(zeileSysL,8) den Namen der Checkbox setzen, das wäre dann z.B. systeme.cells(zeileSysL,9).
Wenn es natürlich eine einfachere Methode gibt, dann bin ich für alle Anregungen offen.
Schon mal im Voraus vielen Dank für's Lesen.
Grüsse edeltraud

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Name der Checkbox in variable Zelle ausgeben
03.05.2006 15:17:16
Yal
Hi,
die Lösung ist nicht einfach, da für jede einzelne Checkbox ein eigene Ereignis-Prozedure haben soll.
Du muss im Voraus alle mögliche Ereignis-Prozedure definieren. Ein Ereig-Proz "Checkbox100_Click" darf existieren, auch wenn keine Checkbox mit dem Name Checkbox100 existiert.
Im Kombination mit der Eigenschaft LinkedCell jenem Checkbox kann man dann gezielt steuern.
Einige Vorschlag, mit jeweils verschiedene Variation:

Private Sub CheckBox1_Click()
Me.Range(CheckBox1.LinkedCell).Value = Me.OLEObjects("CheckBox1").Name & " ist gerade " & IIf(CheckBox1, "an.", "aus.")
End Sub


Private Sub CheckBox2_Click()
Me.Range(CheckBox2.LinkedCell).Value = Me.OLEObjects(CheckBox2.Index).Name & " ist gerade " & IIf(CheckBox2, "an.", "aus.")
End Sub


Private Sub CheckBox3_Click()
Schreibe_zurück CheckBox3
End Sub

Sub Schreibe_zurück(cb)
Me.Range(cb.LinkedCell).Value = cb.Name & " ist gerade " & IIf(cb, "an.", "aus.")
End Sub
...
Viel Spass
Yal
Anzeige
AW: Name der Checkbox in variable Zelle ausgeben
04.05.2006 08:46:40
edeltraud
Hallo Yal,
ich hab gestern wie verrückt rumprobiert mit Deiner Lösung und es würde schon so funktionieren.
Aber so ganz glücklich bin ich nicht damit.
Glaubst Du nicht, daß ich die 50 Ereignis-Prozeduren nicht doch in eine zusammenfassen kann?
Ich hab mal was gelesen über "For each Checkboxes", das hatte aber nicht funktioniert.
Rein theoretisch können alle Checkboxen gleichzeitig abgearbeitet werden.
Vielen Dank auf jeden Fall für die Lösung.
Grüsse edeltraud
AW: Name der Checkbox in variable Zelle ausgeben
04.05.2006 13:49:45
Yal
... schön wär's.
Leider ist das Ereignis nur auf der Objekt-Ebene zu verwalten,
nicht auf der Collection.
Yal
Anzeige
AW: Name der Checkbox in variable Zelle ausgeben
04.05.2006 13:53:16
Peter
Servus,
schreib dir deine eigene Klasse wo du jedes Object schon beim erstellen erfasst.
MfG Peter
AW: Name der Checkbox in variable Zelle ausgeben
04.05.2006 13:55:54
edeltraud
Hallo Peter,
da komm ich jetzt nicht ganz mit. Gib mir nochmal einen Denkanstoss.
mfg edeltraud
Denkanstoss
04.05.2006 14:09:09
Peter
Servus,
du erstellst die Boxen wie bisher, anschließend lässt du Sie alle in die Klasse einlesen und verfügst bei jeder eingelesenen Checkbox Global über Ihre Ereignisse.


'#  Ort:    Klassenmodul des Tabellenblattes
Option Explicit
Private objOleBox() As clsOleBox
Private Sub Worksheet_Activate()
    Dim objControl As OLEObject
    Dim intCounter As Integer, intZ As Integer
    For Each objControl In Me.OLEObjects
        If objControl.progID = "Forms.CheckBox.1" Then
            ReDim Preserve objOleBox(intCounter)
            Set objOleBox(intCounter) = New clsOleBox
            Set objOleBox(intCounter).boxOleCtrl = objControl.Object
            intCounter = intCounter + 1
        End If
    Next
End Sub
'#  Ort:    Klassenmodul
'#  Name:   clsOleBox
Option Explicit
Public WithEvents boxOleCtrl As MSForms.CheckBox
Private Sub boxOleCtrl_Change()
    Call boxOleMacro(boxOleCtrl.Name, boxOleCtrl.Value)
End Sub
'#  Ort:        Modul
Option Explicit
Public Sub boxOleMacro(strNam As String, bolWert As Boolean)
MsgBox Sheets("Tabelle1").OLEObjects(strNam).Name & " / " & bolWert
End Sub


MfG Peter
Anzeige
AW: Denkanstoss
04.05.2006 14:22:52
edeltraud
Hi auch,
ich werds gleich mal ausprobieren.
gruss edeltraud
Checkboxen
09.05.2006 16:48:52
edeltraud
Hallo Peter,
ich hab mein Problem jetzt doch anders gelöst und diese 5 Zeilen für jede Checkbox kopiert.

Private Sub CheckBox1_Change()
nameChkBx = "CheckBox1"
If CheckBox1.Value = True Then Call CheckBoxT
If CheckBox1.Value = False Then Call CheckBoxF
End Sub

AW: Name der Checkbox in variable Zelle ausgeben
04.05.2006 13:53:20
edeltraud
Tja, dann hilfts eben nix. Ich bin eh schon froh, dass ich überhaupt eine Lösung hab.
Schönen Tag noch.
Grüsse Edeltraud

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige