Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA: Range mit vielen Zellen





Frage

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

Antwort 1 von rainberg

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

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 Oli00

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 4 von rainberg

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 5 von Oli00

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 6 von nighty

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 7 von Oli00

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 8 von nighty

hi olli :-)

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

oberley@t-online.de

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: