Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Checkbox Durchlauf

Checkbox Durchlauf
21.08.2007 11:43:00
HalMar
Hallo erstmal ;)
Ich brauche ein Programm, das mir die CheckBox_1 bis CheckBox_n durchläuft (mit Schleife wäre genial...). Wenn der Wert der Checkbox True ist soll es einen bestimmten Bereich auswählen bzw. zu einer Union hinzufügen. Wenn möglich mit der Cell Methode, da ich hierfür Variablen benutzen möchte. Diese Syntax habe ich bei einem anderen Forum gefunden:
Public WS_Navigation As Worksheet
if WS_Navigation.OLEObjects("CheckBox_" & CStr(Gruppe) & "_" & CStr(Pos)).Object.Value = True Then
msgbox "wahr"
End If

Sub Diagramm()
Dim Nummer As Integer
For Nummer = 1 To 28
If fürdiagr.OLEObjects("CheckBox_" & CStr(Nummer)).Object.Value = True Then ' > Fehler
_
' Worksheet heißt fürdiagr
Range("D1").Select
ActiveCell.Offset(0, Nummer).Value = "funktioniert"
End If
Next Nummer
End Sub


Das ist mein Versuch (hat nichts mit dem Programm zu tun, nur als Test gedacht). In der mit > markierten Zeile bekomme ich den Fehler 424 "Objekt erforderlich".
Weiß jemand, was ich tun kann, damit das funktioniert? Bräuchte auch hilfe für das Auswählen, es soll hierbei z.B. falls CheckBox_1 den Wert "True" hat der in B1 und C1 definierte Bereich (B1 Startpunkt, C1 Endpunkt des Bereiches) aus Reihe B ausgewählt (oder auf eine Union geschrieben, bin leider nicht mit VBA vertraut und weiß daher nicht, ob das funktioniert), wenn die CheckBox_2 den Wert "True" hat soll der gleiche Bereich, also in B1 und C1 definiert, aus der Reihe C zusätzlich ausgewählt sein bzw in die gleiche Union geschrieben werden, usw für alle Checkboxen.
Insgesamt soll das Makro bewirken, dass wenn ein CommandButton aktiviert wird, ein anderes Makro startet das die Auswahl der Checkboxen (in B2-AB2 befindlich, ist aber variabel, in A4-Ax steht die Zeit als Größe für die x-Achse) auswertet, also für Checkbox 1 wie oben erklärt den Bereich in B auswählt, Checkbox 2 den Bereich in C und so weiter. Anschließend wird die Auswahl (natürlich mit A Reihe und den Überschriften) auf ein neues Tabellenblatt kopiert, dann soll ein Diagramm daraus erstellt werden. Daher möchte ich auch alles gleichzeitig ausgewählt haben, damit keine leeren Reihen auf dem Diagrammblatt stehen.
Probleme gibt es nur noch bei beiden oben beschriebenen Punkten und bei dem Auswahlbereich des Diagrammes, Spaltenzahl (da durch Variable definiert) sollte nicht weiter schwer sein, aber wie kann ich die Reihenzahl auswerten (hängt ja von der Checkbox-auswahl ab)?
Zur besseren Erklärung: Makro1 erstellt Checkboxen von B2 - Xy in einem bestimmten Abstand, und ein Command Button. Zusätzlich kommt eine Message die das Programm bzw die Benutzung erklärt. Der Benutzer kann dann die Checkboxen auswählen und in B1 und C1 den Zeitbereich eintippen. Mit aktivierung des Command Button wird bei angekreuzten Checkboxen ausgewählt und auf ein neues Blatt kopiert, da wird dann das Diagramm erstellt (vllt nochmal auf ein neues Tabellenblatt).
Ich danke denen die sich das durchlesen und mir eine Antwort geben können ^^ Ich brauche die Hilfe wirklich dringend =)
Mfg Mario

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox Durchlauf
21.08.2007 12:14:00
Beverly
Hi Mario,
falls die CheckBoxen nach wie vor CheckBox heißen, kannst du das über den Namen machen

Sub checkboxen()
Dim loObjekte As Long
For loObjekte = 1 To ActiveSheet.OLEObjects.Count
If Left(ActiveSheet.OLEObjects(loObjekte).Name, 8) = "CheckBox" Then
If ActiveSheet.OLEObjects(loObjekte).Object.Value = True MsgBox "Ich bin geklickt"
End If
Next loObjekte
End Sub


________________________________________

AW: Checkbox Durchlauf
21.08.2007 12:32:00
HalMar
If Left(ActiveSheet.OLEObjects(loObjekte).Name, 8) = "CheckBox" Then
Was hat es da mit der 8 auf sich? An den Counter hab ich auch schon gedacht, allerdings kann es vorkommen (da das Makro für alle Arbeitsblätter verwendbar sein soll) dass sich irgendwo ein anderes Objekt befindet, außerdem hab ich noch den Command Button...
Ich wär echt froh, wenn jemand sich den Code anschauen und den Fehler beheben kann ^^ Sollte ja eigentlich nicht viel falsch sein?
Ich hoffe ()euch fällt noch was ein ^^ Thx so far
P.S.: Funktioniert Add.Selection.Range("Xy:Yx") oder so etwas in der Art? Wenn ja wie genau?

Anzeige
AW: Checkbox Durchlauf
21.08.2007 12:53:00
HalMar
Ah sorry für den übereiligen Nachpost, es passt doch ^^ Danke danke danke *Auf-Knien-vergötter* Es sind nur andere Objekte vorhanden, mit denen funktioniert das.
Wie kann ich das jetzt am besten auswählen? Also mit der Schleife, so dass ich zwei Ranges nacheinander auswählen kann, sie aber trotzdem beide ausgewählt sind? Dass ich dafür die Cell-schreibweise der Range brauche ist klar... aber was kommt davor?

AW: Checkbox Durchlauf
21.08.2007 13:20:53
Beverly
Hi,
wenn du getrennte Bereiche kopieren willst, dann kannst du sie auch im Range-Befehl zusammenfassen, z.B. Range("A2:A20,C2:C20,AD2:AD20").Copy, oder du arbeitest mit dem Set-Befehl

Sub bereiche_kopieren()
Dim raBereich1 As Range
Dim raBereich2 As Range
Dim raBereich3 As Range
Dim raBereich4 As Range
Dim raGesamt As Range
Set raBereich1 = Range("A2:A20")
Set raBereich2 = Range("C2:D20")
Set raBereich3 = Range("F2:F20")
Set raBereich4 = Range("H2:H20")
Set raGesamt = Union(raBereich1, raBereich2, raBereich3, raBereich4)
raGesamt.Copy
End Sub


Bis später,
Karin

Anzeige
AW: Checkbox Durchlauf
21.08.2007 14:02:43
HalMar
Das schon, mit der Deklaration, Union und dem Kopieren geben sich keine Probleme, aber wie mach ich das fortlaufend? Also so würde das aussehen im Moment:

Sub checkboxen()
Dim R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19,  _
R20, R21, R22, R23, R24, R25, R26, R27 As Range 'Bei Bedarf weitere hinzufügen
Dim Checkcount As Long
Dim VarB1, VarB2 As Integer
Set VarB1 = Range("B1")
Set VarC1 = Range("C1")
For Checkcount = 1 To ActiveSheet.OLEObjects.count
If Left(ActiveSheet.OLEObjects(Checkcount).Name, 8) = "CheckBox" Then
If ActiveSheet.OLEObjects(Checkcount).Object.Value = True Then Set R1 =  _
Range(Cells(Checkcount + 1, VarB1), Cells(Checkcount + 1, VarC1))
End If
Next Checkcount
End Sub


Ich möchte R1 fortlaufend, also mit der Variable Checkcount falls das funktioniert, und bei der Range möchte ich noch jeweils den Wert der 3. Spalte der Reihe hinzufügen, bei B also B3 (weil da die Überschriften drinstehen), bei C C3 usw.
Wär genial wenn du mir das auch noch zeigen könntest ^^ Wahrscheinlich kommt danach noch eine letzte Frage (außer ich finde die Lösung vorher noch, einfach mal nachdenken würds glaub ich auch tun ^^), dann werd ich das ganze mal hier posten =)

Anzeige
AW: Checkbox Durchlauf
21.08.2007 15:02:00
Beverly
Hi,
ich weiß leider nicht was du meinst mit

Ich möchte R1 fortlaufend, also mit der Variable Checkcount falls das funktioniert,


Was das Hinzufügen von B3 usw. betrifft: wie ermittelst du die jeweilge Spalte? Vom Prinzip her kannst du die Zelle ja so ansprechen - Cells(3, SpaltenNummer).
Bis später,
Karin

AW: Checkbox Durchlauf
21.08.2007 15:22:19
HalMar
Re-hi!
B3 muss ich als Range dazu deklarieren, wird wahrscheinlich einfach als R1U = Union(R1,Range("B3") am besten gehen, und hier das Problem: da ich das ja in einer Schleife laufen lasse will ich nicht, dass ich immer wieder R1U bzw R1 überschreibe, sondern eben R1U, R2U (Je nach Checkcount), ebenso wie B3, C3,... . Genau das will ich erreichen ^^
Und danke dass du dich meiner annimmst *g*

Anzeige
AW: Checkbox Durchlauf
21.08.2007 21:13:46
Beverly
Hi,
einen Schleifendurchlauf zum "Aufsummieren" der einzelnen Bereiche könntest du nach diesem Prinzip erreichen

raGesamt = Union(raGesamt, R2, Range("B3"))


Bis später,
Karin

AW: Checkbox Durchlauf
22.08.2007 08:59:10
HalMar
Hi Karin,
So sieht das jetzt im Moment aus...

1: Sub l()
2:    Dim VarB1 As Range, VarC1 As Range, R1 As Range, Full As Range, Checkcount As Long
3:    VarB1 = Range("B1")
4:    VarC1 = Range("C1")
5:    For Checkcount = 1 To ActiveSheet.OLEObjects.count
6:        If Left(ActiveSheet.OLEObjects(Checkcount).Name, 8) = "CheckBox" Then
7:            If ActiveSheet.OLEObjects(Checkcount).Object.Value = True Then R1 = Range(Cells( _
Checkcount,  VarB1), Cells(Checkcount, VarC1))
9:        End If
10:        Full = Union(Full, R1, Range("B3")) 'Hier möchte ich, dass B3, C3, D3, abhängig von  _
Checkcount, stehen können...
12:       Next Checkcount
13:        Range(Full).Select
14: End Sub


Bei Zeile 7 und 10 gibt er mir jeweils den Fehler "Typen unverträglich" . Ich denke mal, dass mein grundlegendes Problem ist, dass ich die Variablen falsch definiert habe? Und wie kann ich statt
Range("B3") von Checkcount abhängig machen? Dani hat mir bei einem anderen Post das hier geschrieben:


Private Sub CommandButton1_Click()
Dim Checkcount As Long
Dim Markierung As String
For Checkcount = 1 To ActiveSheet.OLEObjects.Count
If Left(ActiveSheet.OLEObjects(Checkcount).Name, 8) = "CheckBox" Then
If ActiveSheet.OLEObjects(Checkcount).Object.Value = True Then
If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(64 + Checkcount) & Range("B1") & ":" & Chr(64 +  _
Checkcount) & Range("C1")            End If
End If
Next Checkcount
Range(Markierung).Select
End Sub


Allerdings möchte ich in der markierten Zeile auch noch abhängig von Checkcount B3,C3,D3,... ansprechen. Wie kann ich das erreichen?


Markierung = Markierung & Chr(64 + Checkcount) & Range("B1") & ":" & Chr(64 + Checkcount) & Range("C1") & "," & Chr(64 + Checkcount) & 3


hat nicht funktioniert...
Lg Mario

Anzeige
AW: Checkbox Durchlauf
22.08.2007 09:47:00
Beverly
Hi Mario,
ich würde mal vermuten, der Fehler liegt daran, dass "R1" auch eine Zellenbezeichnung ist. Ein Umbenennen könnte evtl. schon abhilfe schaffen.
Es wäre sicher einfacher, wenn du deine Mappe hochladen würdest. Da ich deinen Mappen-/Tabellenaufbau nicht kenne, sind derartige Dinge immer schwer nachzuvollziehen und ein Nachbau hat wenig Sinn, weil dieser nie identisch mit dem Original ist und deshalb nicht alle Bedingungen berücksichtigen kann.
Bis später,
Karin

AW: Checkbox Durchlauf
22.08.2007 10:05:00
HalMar
Guten Morgen,
https://www.herber.de/bbs/user/45259.zip
Im Moment noch ein Schlachtfeld... Genau geht es mir um das Makro "l" und das Makro "checkboxen", wenn keine der beiden funktionieren sollte wird das ganz schön viel Code =/ Den Rest bitte nicht beachten, ist noch nicht fertig ^^
Lg Mario

Anzeige
AW: Checkbox Durchlauf
22.08.2007 15:27:55
HalMar
Hey Karin =)
Hat auf die andere Art nach langem probieren funktioniert ^^
Danke dass du dir die Zeit genommen hast, ohne dich wär ich glaub ich nicht mal auf die Idee gekommen... Thx =)
Lg Mario

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige