Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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
Inhaltsverzeichnis

Ansprechen von Steuerelementen via makro

Ansprechen von Steuerelementen via makro
11.08.2014 22:04:22
Steuerelementen
Hi Leute,
da ich per google schon häufiger Antworten auf meine Fragen in diesem Forum gefunden habe, hab ich mich mal angemeldet und hoffe das mir jemand mit meinem Problem helfen kann(Excel 2010):
Ich habe eine Tabelle, inder sobald eine bestimmte Zelle einen Wert enthält(sagen wir einfach mal B1), automatisch in der danebenliegenden Zelle eine Checkbox(Active X Steuerelement) erstellt wird(A1). Diesen Checkboxen werden dann abhängig vom Zelleninhalt bis A20 erstellt.
Den Checkboxen habe ich den Namen Versuch1 bis Versuch20 zugeordnet(nicht die Caption, sondern der Name).
Nun möchte ich eine Schleife aufbauen um diese Steuerelemente einzeln nacheinander Abzufragen(True or False) und eine Reaktion darauf auszulösen. Nur bekomme das beim besten willen nicht hin...
Eigentlich muss ich bei dem Namen ja nur die Zahl hinter Versuch auslesen, aber egal wie ich das Versuche, es klappt nicht. Die Steuerelemente sind der Spalte A nicht direkt zugeordnet und am liebsten würde ich das über den Namen abfragen. Zur Not würde ich den Wert der Checkbox auch der jeweiligen Zelle zuordnen und dann die Abfrage machen, jedoch bekomme ich dabei den Wert in der Zelle nicht unsichtbar für den benutzter... wäre super, wenn mir hier jemand helfen kann!
Hier der Quelltext für die Checkboxen:
Public Sub ActiveX_erstellen()
Dim i As Integer
Dim Versuch As String
ThisWorkbook.Worksheets("Eingabe").Activate
For i=1 To 20
If Not IsEmpty((Cells(i,2)) Then
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=10,
DisplayAsIcon:=False, Left:=Cells(i,1)+20, Top:=Cells(i,1).Top+2,
Width:=12,Height:=10).Name="VErsuch" & i
End If
Next i
mein letzter "verzweifelter" Quelltext zur Umsetzung meines Problems war:
For i=1 To 20
If ActiveSheet.OLEObjects.FormFields("Versuch" & i).CheckBox.Value= True Then
Cells(i,2)).Copy Destination:=Cells(i+10,i+10)
End If
Next i
Viele Grüße
Toni

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ansprechen von Steuerelementen via makro
11.08.2014 22:14:50
Steuerelementen
HI
ich würde da gar nicht mit Checkboxen arbeiten, sonden die Zellen der Spalte A selbst über das Doppelklick-Event als Checkbox verwenden mit folgendem Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column  1 Then Exit Sub 'Nur in Spalte A
If Target.Offset(0, 1).Value = "" Then Exit Sub 'nur wenn die Zelle daneben befüllt ist
If Target.Value = "" Then
Target.Value = "X"
Else
Target.ClearContents
End If
cancel = true
End Sub
zum Abfragen brauchst du dann nur noch die Zellinhalte der Spalte A zu prüfen, ob diese "X" oder leer sind.
wenn dir das "X" und Leer nicht gefällt, dann kannst du die Spalte A auch mit Wingding2 als Schriftart formatieren, da gibt es dann entsprechende Zeichen, die wie "gesetzes Häkchen" und "leeres Kästchen" aussehen und die du statt dem "X" verwenden kannst.
Gruß Daniel

Anzeige
AW: Ansprechen von Steuerelementen via makro
11.08.2014 22:57:53
Steuerelementen
Hallo Toni
Etwa so?

For Each OleObj In Worksheets("Eingabe").OLEObjects
Select Case Right(OleObj.Name, 2)       'Oder so - Select Case OleObj.Name -
'Dann aber -  case = "Versuch01"
Case Is = "01", "02", "03", "04", "05"  'Blei gleicher Aktion
If OleObj.Object.Value = True Then
End If
Case Is = "06"
If OleObj.Object.Value = True Then
End If
Case Is = "07"
If OleObj.Object.Value = True Then
End If
Case Is = "08"
If OleObj.Object.Value = True Then
End If
'usw......
End Select
Next
Mfg Gerold
Rückmeldung wäre nett.

AW: Ansprechen von Steuerelementen via makro
11.08.2014 23:35:00
Steuerelementen
Hi Gerold,
damit müsste ich dann aber jeden der 20 Versuche bzw. dann eben auch CheckBoxen indirekt einzeln abfragen? Da hiernach erst eine längere Rechnung(für jede Checkbox aber die gleiche Rechnung nur ein anderes Ziel der generierten Daten) folgt, wollte ich das eben gern umgehen. Deswegen die Idee mit den Namen und der Nummerierung.
Ablauf wäre ca. so:
Eine If Schleife, die jede Checkbox auf True prüft und wenn das der Fall ist, kopiere Daten in ein Feld, löse ein anderes Makro aus, kopiere errechnete Daten zurück in ein Feld, beginne mit der Abfrage der Nächsten Box.
Viele Grüße
Toni

Anzeige
AW: Ansprechen von Steuerelementen via makro
11.08.2014 23:56:06
Steuerelementen
Hi
for i = 1 to 20
if ActiveSheet.OleObjects("Checkbox" & i).Object.Value = True then
Next
Gruß Daniel

AW: Ansprechen von Steuerelementen via makro
13.08.2014 17:09:42
Steuerelementen
Hi,
so eine kleine Rückmeldung:
die If- Schleife die ich versucht hatte im Anfangspost hatte natürlich nicht funktioniert! Daher ja mein Problem :)
Ich habe nun die Umsetzung von Gerold genommen. Es war nicht genau das was ich suchte, hat mir aber noch ein Problem abgefangen.
Vba sucht in einer If Schleife natürlich nach jeder Variablen und wenns eine davon nicht gibt, bricht es erst einmal ab. Da meine Checkboxen nicht immer da sind, sondern nur durch Einträge generiert werden, funzt die normale If- Schleife leider nicht, da excel Variablen sucht die es nicht gibt. Das löst die Version mit Case gleich mit :)
Um den Quelltext kurz zu halten übergebe ich jetzt einfach in dem jeweiligen case- Fall an eine andere Sub über variablen :)
Soweit ist damit meine Frage beantwortet und ich Danke euch beiden für die Hilfe
Gruß, Toni

Anzeige
AW: Ansprechen von Steuerelementen via makro
11.08.2014 23:21:44
Steuerelementen
Hi Daniel,
das würde mir nicht wirklich weiter helfen.
Zum einen betrachte ich die mache ein X Variante in der Zelle als Quick and Dirty Variante und wäre nur die letzte Lösung.
Zum anderen will ich dem Anwender die Möglichkeit lassen, frei entscheiden zu können welche Zeile er anklicken möchte um damit später weiter zu arbeiten. Soweit ich dein Vorschlag verstehe, löst jeder Eintrag in der Zelle neben dem X ein X aus. Damit würde er mit jedem auch weiter arbeiten müssen.
Zudem sehe ich keinen Grund dafür, wieso das nicht mit den CheckBoxen funktionieren soll... wozu gibt es sie denn sonst und swozu kann man ihnen Namen zuordnen. Ich weiß leider nur noch nicht wies geht :(
Viele Grüße,
Toni

Anzeige
AW: Ansprechen von Steuerelementen via makro
11.08.2014 23:51:08
Steuerelementen
Hi
hast du falsch verstanden.
das "X" setzt du über den Doppelklick auf die Zelle in der Spalte A.
Das funktioniert aber nur, wenn in Spalte B ein Wert steht, dh wenn die Zelle in Spalte B leer ist, kann der Anwender soviel klicken wie er will, es passiert nichts, aber bei den Zellen wo in Spalte B steht, kann der Anwender frei entscheiden, ob er sie anklicken will oder nicht.
Gruß Daniel

AW: Ansprechen von Steuerelementen via makro
12.08.2014 00:03:03
Steuerelementen
Hallo Toni

Durch
For Each OleObj In Worksheets("Eingabe").OLEObjects"
End Select
wird doch jedes einzelne Oleobjekt(CheckBox)abgefagt
wie in einer Schleife
Mfg Gerold
Rückmeldung wäre nett.
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge