Live-Forum - Die aktuellen Beiträge
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

Auswahlen nacheinander zusammenfügen

Auswahlen nacheinander zusammenfügen
21.08.2007 13:30:38
HalMar

Wie schon in meinem vorigen Beitrage erwähnt (Checkbox durchlauf) suche ich jetzt eine Möglichkeit, wie ich in einer Schleife mehrere Range-auswahlen treffen kann, so dass alle aktiv sind.
Konkreter: Bei einer For-Next Schleife werden nacheinander Checkboxen abgefragt, Checkbox1 für Reihe B, Checkbox2 für Reihe C,... . Zusätzlich kann der Spaltenbereich über 2 Variablen ausgewählt werden. Wenn der Wert von Checkbox1 "True" ist, soll z.B. B4:B98 ausgewählt werden. Wenn der Wert von CHeckbox2 "True" ist, dann soll der Bereich C4:C98 ebenfalls ausgewählt sein. Die Checkboxen werden zuserst geklickt, danach kommt die Abfrage.
Kann das so überhaupt funktionieren bzw. geht das irgendwie als Union?


Sub checkboxen()
Dim Checkcount As Long
For Checkcount = 1 To ActiveSheet.OLEObjects.count
If Left(ActiveSheet.OLEObjects(Checkcount).Name, 8) = "CheckBox" Then
If ActiveSheet.OLEObjects(Checkcount).Object.Value = True Then ' hier sollte das  _
dann hin...
End If
End If
Next Checkcount
End Sub


Mfg Mario
P.S.: Code geklaut von Beverly =)

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:06:15
HalMar
Bin ich gleich nach dem posten auch draufgekommen... Kann man Beiträge irgendwie löschen? Wenn nicht tut mir das Leid =/
Bin der Lösung allerdings schon auf der Spur, mit Range und Union... was würde ich nur ohne Beverly machen xD

AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:08:55
Dani
Hallo Mario
mit


If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(66 + Checkcount) & "4:" & Chr(66 + Checkcount) & "98"


wenn du allerdings noch andere Steuerelemente auf der Sheet hast musst du das Anpassen.
Gruss
Dani

Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:25:35
HalMar
Hi Dani,
danke erstmal für den Lösungsweg, allerdings möchte ich eine Variable für den Bereich (VarB1 für die 4 die in der Zelle B1 steht und VarC1 für die 98 die in der Zelle C1 steht).


If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(66 + Checkcount) & "4:" & Chr(66 + Checkcount) & "98"


dachte das könnte so aussehen, tut es aber nicht:


Markierung = Markierung & Chr(66 + Checkcount) & VarB1 & ":" & Chr(66 + Checkcount) & VarC1 


Laufzeitfehler5: Ungültiger Prozeduraufruf oder ungültiges Argument. Help?

Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:36:40
Dani
Hallo Mario,
du kannst die Werte direkt übernehmen:


If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(65 + Checkcount) & Range("B1") & ":" & Chr(65 + Checkcount) & Range("C1")


Ich hoffe ich habe dich richtig verstanden.
Gruss
Dani

AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:45:01
HalMar
Sorry, bin seit 5 wach und kein Kaffeetrinker... *g* Allerdings liefert er mir in der 2. Zeile noch immer den Error 5?

AW: Auswahlen nacheinander zusammenfügen
21.08.2007 14:53:35
Dani
Hallo
ich schicke dir mal die ganze Sub:


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(65 + Checkcount) & Range("B1") & ":" & Chr(65 +  _
Checkcount) & Range("C1")
End If
End If
Next Checkcount
Range(Markierung).Select
End Sub


Immer noch Probleme?
Gruss
Dani

Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 15:12:06
HalMar


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(65 + Checkcount) & Range("B1") & ":" & Chr(65 + Checkcount) & Range("C1") & "," & "& Chr(65+Checkcount)& 3" 


So weit so gut, allerdings der Error 5... Was macht das hier eigentlich?


Len(Markierung) > 0 Then Markierung = Markierung & ","


Der Wert von der Variable Markierung war vorher übrigens E6, E65:E6, F6:E65,... sowas in der Art, jetzt allerdings D6:D65,& Chr(65 + Checkcount)& E6:E65,& Chr(65 + Checkcount)& F6:F65... usw, obwohl das Kästchen bei F gar nicht ausgewählt ist. Außerdem scheint der Code B zu überspringen, welches wiederum ausgewählt ist. Und am Ende liefert es immer den gleichen Fehler, also immer noch Error 5.
Freu mich auf eine Antwort ;)
Lg Mario

Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 15:33:48
Dani
Hallo Mario


Len(Markierung) > 0 Then Markierung = Markierung & ","


Die Funktion Len() gibt die Länge des Strings zurück ist diese grösser als "0" so wird am Ende ein Komma angehängt.
Ich lege mal mein File auf:
https://www.herber.de/bbs/user/45247.xls
Gruss
Dani

AW: Auswahlen nacheinander zusammenfügen
21.08.2007 15:56:38
HalMar
Hm =/ Dein Code funktioniert (wie ja zu erwarten war ;) ) einwandfrei... Könntest du das jetzt noch so umändern, dass für jedes Kontrollkästchen noch die 3. Zelle markiert? Also für das erste bei deinem Beispiel Zelle B3 usw., hier war nämlich unter anderem einer meiner Fehler. Der zweite war dass ich erst mal 190 Kontrollkästchen löschen durfte... hab da schon zu viel probiert denke ich, woraus der Wert von Checkcount am Ende 191 war...
Also vielen Dank mal so weit ^^ Ich glaub wenn das fertig ist öffne ich nie wieder VBA...

Anzeige
AW: Auswahlen nacheinander zusammenfügen
21.08.2007 21:39:06
Dani
Hallo Mario
bin etwas Müde könntest du mir die Beispieldatei hochladen und die gewünschten Zellen einfärben dann mach ich das gerne für dich
Gruss
Dani

AW: Auswahlen nacheinander zusammenfügen
22.08.2007 08:26:20
HalMar
Hi Dani
Es funktioniert jetzt alles, bis auf die Tatsache das ich keine Ahnung habe wie ich mit


If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(64 + Checkcount) & Range("B1") & ":" & Chr(64 + Checkcount) & Range("C1")


auch noch die 3. Zelle ansprechen kann, also ebenfalls mit Chr(64 + Checkcount) weil es ja die selbe Reihe sein soll, allerdings mit der 3. Zeile, also bei dem 1. Kästchen in deiner Beispieldatei die Zelle B3, bei dem 2. C3 usw. Hab da herumprobiert, hab aber immer Fehler produziert =/
Lg Mario

Anzeige
AW: Auswahlen nacheinander zusammenfügen
22.08.2007 11:22:27
Dani
Hallo Mario
verstehe ich dich richtig?


If Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(64 + Checkcount) & "3," & Chr(64 + Checkcount) & Range("B1") & ":" & Chr(64 + Checkcount) & Range("C1")


Gruss
Dani

AW: Auswahlen nacheinander zusammenfügen
22.08.2007 11:53:22
HalMar
Ja, genau das wollte ich ^^
Jetzt bleibt nur noch die Fehlermeldung: Laufzeitfehler 1004: Die Methode 'Range' ist für das Objekt '_Worksheet' fehlgeschlagen... Kommt komischerweise nur bei meinen Sheets, nicht aber bei deinem...
Hier mein CommandButton:


Private Sub CommandButton2_Click()
Sheets("fürdiagr").Select
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) & "3," & Chr(64 + Checkcount) &  _
Range("B1") & ":" & Chr(64 + Checkcount) & Range("C1")
End If
Next Checkcount
Range(Markierung).Select
End Sub


Wenn du mir da noch helfen könntest wäre das super ^^ Aber vielen dank für den Code oben, das is genau was ich schon die ganze Zeit suche ^^
Lg Mario

Anzeige
AW: Auswahlen nacheinander zusammenfügen
22.08.2007 12:27:43
Renee
Hello Mario,
Laufzeitfehler 1004 entsheht aus den Codes
Range(rangeName), weil Du zuerst das Blatt wechselst , der Button aber in einem anderen Sheet liegt.
Also müsste es z.B. heissen:
ActiveSheet.Range("C1"), wenn der Inhalt der Zelle C1 von dem Blatt fürdiagr stammen sollte.
Wenn es bei seinem Sheet funktioniert, dann hat er die Schaltfläche eben auch auf Blatt fürdiagr, Du aber nicht!
Greetz Renee

AW: Auswahlen nacheinander zusammenfügen
22.08.2007 13:21:38
HalMar
Hi Dani und Renee,
hier https://www.herber.de/bbs/user/45269.zip die Arbeitsmappe, ich denke mal das wird so einfacher...
Egal wie ich es drehe und wende, mit Active.Sheet oder ohne, irgendwie produziert mir alles Fehler >.< Vielleicht bin ich auch einfach nur zu blöd dazu ^^
Der Fehlercode befindet sich auf dem Command Button in Zelle A1:A2. Der ursprüngliche Code steht im Makro "Checkboxen".
Vielleicht findet ihr ja die Fehler... ich zähl auf euch =)
Lg Mario

Anzeige
AW: Auswahlen nacheinander zusammenfügen
22.08.2007 13:32:08
Hi Mario,
Sorry, aber das ist mir zu komplex.
Auf den ersten Blick, strotzt der Code nur so von Fehlern (Im VB-Editor) auf Debuggen - Kompilieren drücken.
Zudem sind da Verweise auf Libraries, die mir absolut unbekannt sind!
Greetz Renee

AW: Auswahlen nacheinander zusammenfügen
22.08.2007 12:29:44
Dani
Hallo Mario


Private Sub CommandButton2_Click()
Sheets("fürdiagr").Select
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) & "3," & Chr(64 + Checkcount) & Range("B1") & ":" & Chr(64 + Checkcount) & Range("C1")
End If
End If
Next Checkcount
Range(Markierung).Select
End Sub


Die Zeile welche das Komma einfügt darf nicht in der "Then"Zeile stehen damit der If Then Block sauber abgearbeitet wird. Deshalb muss auch noch ein End If zusaätzlich in den Code.
Gutes gelingen
Dani

Anzeige
Aktivierung bzw Verweis fehlt?!?
22.08.2007 13:43:51
HalMar
Hi again
Ja, das mit den Fehlern war mir irgendwie klar... ich muss den Code sowieso noch bearbeiten, weil ich insgesamt nur 2 Makros behalte, der Rest ist nur zum Testen usw. Hab jetzt allerdings auch bei dem Code nur noch diesen Fehler:


Private Sub CommandButton2_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 ActiveSheet.Len(Markierung) > 0 Then Markierung = Markierung & ","
Markierung = Markierung & Chr(64 + Checkcount) & "3," & Chr(64 + Checkcount) &  _
ActiveSheet.Range("B1") & ":" & Chr(64 + Checkcount) & ActiveSheet.Range("C1")
End If
End If
Next Checkcount
ActiveSheet.Range(Markierung).Select
End Sub


Es ist im Grunde der selbe Fehler wie vorhin, egal ob ich ActiveSheet. davor schreibe oder nicht, mit kommt der Fehler "Anwendungs oder objektdefinierter Fehler", ohne kommt der "Die Methode Range ist für das Objekt '_Worksheet' ungültig".
Welchen Verweis bzw. was habe ich da falsch angegeben bzw. fehlen mir Verweise/Aktivierungen?
Das Arbeitsblatt heißt "Diagrammtest", das Tabellenblatt "fürdiagr". Hoffe dass damit jemand was anfangen kann...
Lg Mario

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 13:56:23
Hallo Mario,
Der Fehler kommt, weil schlicht und ergreifend nix in der Variablen Markierung steht!
In VB gibts einen Debugger und mit F8 kannst Du schrittweise durch den Code und jeweils den Variablen Inhalt überprüfen (meist genügt, mit der Maus im F8-Modus über die Variable zu fahren!).
Greetz renee

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 13:57:31
Dani
Hallo Mario
ich habe das angepasst:
https://www.herber.de/bbs/user/45271.zip
Die Zeile:


If ActiveSheet.Len(Markierung) > 0 Then Markierung = Markierung & ","

geändert auf:


Len(Markierung) > 0 Then Markierung = Markierung & ","

Die Zeile scheint es wirklich in sich zu haben...
Gruss
dani

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 14:07:33
Dani
Hallo Mario
noch was:


Markierung = Markierung & Chr(65 + Checkcount) & "3," & Chr(65 + Checkcount) & ActiveSheet.Range("B1") & ":" & Chr(65 + Checkcount) & ActiveSheet.Range("C1")


damit die Checkbox auch die richtige Spalte Markiert Ziffer 64 in 65 ändern 3x
Gruss
Dani

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 14:28:18
HalMar
Hi Dani und Renee,
Ich glaub mal die Lösung ist nicht fern, aber dennoch verschleiert (verdammter Smog -_-) *g*
Renee du hast natürlich Recht, hatte ja nichts ausgewählt... hab das aber geändert, jetzt stehen Werte drin, und es kommt der Fehler "Anwendungs oder Objektdefinierter Fehler".
Dani, hab das jetzt auch umgeändert, das ActiveSheet. war in der Zeile wirklich fehl am Platz und die Chars sind jetzt auch ausgetauscht.
Allerdings bleibt immer noch der Fehler bei


ActiveSheet.Range(Markierung).Select

, den ich ja schon die ganze Zeit hatte... egal ob mit ActiveSheet. oder ohne, mit Wert in der Markierung oder ohne... ich versteh einfach net warum? Er sollte ja genau das nehmen was auf Markieren steht... produziert aber entweder einen Anwendungs/Objektdefinierten Fehler oder einen "Range Methode für _Worksheet ungültig". Was ist da Falsch =/
Lg Mario
P.S.: Dani, kann es sein dass du mir das selbe wieder hochgeladen hast?

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 14:43:02
Dani
Hallo Mario
ich versuchs noch mal - bei mir funktionierts
https://www.herber.de/bbs/user/45276.zip
Ich hoffe es klappt jetzt wirklich
Gruss
Dani

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 15:00:24
HalMar
Hi Dani,
Ich denke genau das ist der Fehler. Bei dir funktioniert es, bei mir nicht. Obwohl ich genau den selben Code habe. Auch mit vorheriger Auswahl des Arbeitsblattes und des Tabellenblattes funktioniert die Zeile


ActiveSheet.Range(Markierung).Select   


nicht. Das witzige, deine Version hat bei mir auch nicht funktioniert, gleicher Fehler. Obwohl ich nichts umbenannt habe. Woran kann das liegen? Ich werd das jetzt noch mit einem neuen Arbeitsblatt probieren, wenn das nicht funktioniert...
Lg Mario

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 15:11:21
Dani
Hallo Mario
was steht in der Variablen Markierung wenn der Code "hängt"
Gruss
Dani

AW: Aktivierung bzw Verweis fehlt?!?
22.08.2007 15:21:02
HalMar
OMG!!! YEAH !!!!! Es funktioniert endlich ^^
Die Lösung wäre so einfach gewesen... einfach auf ein neues Datenblatt kopieren... ich denk der war einfach schon so überfordert mit den ganzen Verweisen und Makros dass das einfach nicht mehr funktioniert hat...
Ich danke euch beiden =) Ohne euch hätte das nie funktioniert... Wow ^^
Piece ;) Werd das Programm dann anschließend posten wenn es fertig ist... da kommen dann aber noch Verschönerungen und Zusatzfunktionen. Danke !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige