Thema: VBA: Range mit vielen Zellen


Seite durchsuchen:
Home


zurück zur Übersicht

Diskussionsgruppe: Tabellenkalkulation

Hallo,

ich habe das Problem, dass ich gerne Zellen nach einem bestimmten Kriterium auswählen möchte. Das klappt auch soweit ich schreibe alle Zellen in einen String und lege diesen String dann in das Range.

Sub test()

Dim Zelle As Range
Dim Suchbereich As Range
Dim Farbe As Variant
Dim ClrSel As String
Dim arr As Variant


Farbe = Range("a2").Interior.ColorIndex
Set Suchbereich = ActiveSheet.UsedRange

For Each Zelle In Suchbereich

If Zelle.Interior.ColorIndex = Farbe Then
ClrSel = ClrSel + "," + Zelle.Address
End If

Next

If Left(ClrSel, 1) = "," Then ClrSel = Mid(ClrSel, 2, Len(ClrSel) - 1)

Range(ClrSel).Select

End Sub

Das Problem ergibt sich meiner Meinung nach, wenn ich zuviele Zellen in dem String habe. Hier tritt der Fehler auf:

Laufzeitfehler 1004

Die Methode Range für das Objekt _Global ist fehlgeschlagen.

Hat man das lösen kann?

Grüße

Oli

Von: Oli00 Datum: 26.02.2007, 15:13

alle Antworten zu dieser Frage




Antwort 1 von rainberg vom 26.02.2007, 17:07
Hallo Oli,

ungetestet würde ich sagen, ersetze folgende Zeile

ClrSel = ClrSel + "," + Zelle.Address

durch diese

ClrSel = ClrSel & "," & Zelle.Address

den Textwerte kann man nicht addieren, sondern nur verketten.

Gruß
Rainer

Antwort 2 von Oli00 vom 26.02.2007, 17:11
Hi Rainer,

bitte mal testen. Der Code funktioniert einwandfrei mit z.B. 10 Zellen. Wenn du allerdings das Ganze mit 300 Zellen machst wird der String zu lang und Range bringt das geschilderte Problem.

Hat leider sicher nichts mit Addition oder Verkettung zu tun.

Grüße

Oli

Antwort 3 von gebannter vom 26.02.2007, 17:50
Hallo

Hab's mit Excel2000 nachvollzogen - es geht solange der String <256 Zeichen lang ist, dann kommt der Fehler 1004.
Leider keinen Lösungsansatz bisher....

Gruß

Antwort 4 von Oli00 vom 26.02.2007, 18:11
Hi,

genau das dachte ich mir auch. Hatte es zwar nicht selbst ausprobiert wieviele Zeichen es sind, aber es war klar das der Hase hier im Feld begraben liegt.

Viele Grüße

Oli

Antwort 5 von rainberg vom 26.02.2007, 18:45
Hallo Oli,

ich habe den Code weder genauer analysiert noch getestet und habe auch nicht die Absicht dies zu tun, da ich keine Zeit habe eine entsprechende Tabelle nach zu bauen.

Mir fiel lediglich auf, dass die Textverkettung zumindest in meinen Augen mit den falschen Operatoren geschehen ist.

Wenn dies trotzdem läuft, dann ist es ja gut nur habe ich es auf diese Art noch nicht praktiziert.

Gruß
Rainer

Antwort 6 von Oli00 vom 26.02.2007, 18:49
Sorry, wenn es wie ein Angriff rüber kam! Sollte es beim besten Willen nicht sein!

Danke auf jeden Fall für den Beitrag.

Grüße

Oli

PS: Die Tabelle kann man nachbauen indem man ein leeres Blatt nimmt und die erste Spalte rot einfärbt.

Antwort 7 von nighty vom 26.02.2007, 20:00
hi olli :-)

lege die daten in ein array

hier ein kleines beispiel der array darstellung

was zwar kein bezug zu deinem problem hat aber eben zum ueben bzw verstaendnis dient

Sub LesenSchreiben()
Dim ExceL()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Tabelle1
Set ws2 = Tabelle2
ExceL = ws1.Range("A1:B5")
ws2.Range("A1:B5") = ExceL()
End Sub

gruss nighty

Antwort 8 von Oli00 vom 15.03.2007, 10:00
Hi,

danke für die Antowort. Ich habe mal versucht das ganze umzusetzen, habs aber leider nicht hinbekommen. Wenn du nochmal Zeit hast kannst du ja mal sagen wie du dir das ganze gedacht hattest.

Viele Grüße

Oli

Antwort 9 von nighty vom 15.03.2007, 21:37
hi olli :-)

schick mir eine mustertabelle mit ausführlichen wünschen und eindeutigen betreff bei der email

oberley@t-online.de

gruss nighty

Antworten der Gruppe: Tabellenkalkulation
www.supportnet.de







Office 365 stellt vertraute Microsoft Office-Tools für die Zusammenarbeit und Produktivität über die Cloud bereit. So können alle ganz einfach von nahezu überall zusammenarbeiten und auf E-Mails, Webkonferenzen, Dokumente und Kalender zugreifen.

07111 07112 07113 07114 07115 07116 07117 07118