Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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

Range aus String erzeugen

Range aus String erzeugen
13.09.2018 10:33:27
Hannes
Hallo zusammen,
mit folgendem Code lese gehe ich viele Zellen und Zeilen durch und schreibe in Array die Zeilennummer falls in einer Zeile keine mit Farbe versehenen Zellen anzutreffen sind.
For i = start_zeile + 10 To end_zeile Step 2
flag_zeile_farbe = 0
For k = spalte_hinten_start To spalte_hinten_ende
If Cells(i, k).Interior.ColorIndex  xlNone Then
flag_zeile_farbe = 1
Exit For
End If
Next k
If flag_zeile_farbe = 0 Then
array_farbe(l) = i
End If
l = l + 1
Next i

Mit diesem Code-Schnipsel lese ich aus dem Array die Zeilennummern wieder aus und erzeuge daraus einen String um in einem nachfolgenden Schritt die Range markieren zu können und dann die Zeilen zu löschen.

zeilenzahl = UBound(array_farbe)
For i = 0 To zeilenzahl
If array_farbe(i)  0 Then
string_range = string_range & array_farbe(i) & ":" & array_farbe(i) & ", "
End If
Next i
Dies ist aber halt ein String und diesen kann ich dann hier nicht wie von mir dargestellt verwenden.

Range(string_range).Select
Selection.Delete
Wie kann ich aus diesem String eine Range erzeugen? Ich komme hier einfach nicht weiter.
Besten Dank für eure Hilfe.
Gruß
Hannes

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: split?
13.09.2018 10:43:34
Fennek
Hallo,
ein Beispiel ("freihändig")

dim Tx as string
Tx = "abc def"
TxA = split(Tx) 'ein 1-D-Array
Range("A1").rezise(ubound(TxA)+1) = application.transpose(TxA)
mfg
AW: Range aus String erzeugen
13.09.2018 10:49:32
Robert
Hallo Hannes,
in Deiner Variablen string_array hast Du am Schluss noch das Komma und ein Leerzeichen. Das muss zuerst noch entfernt werden:
string_range = Left(string_range, Len(string_range) - 2)

Dann kann mit
Range(string_range).Delete

der entsprechende Bereich gelöscht werden.
Gruß
Robert
Anzeige
AW: Range aus String erzeugen
13.09.2018 10:50:41
Rob
Versuch es mal damit:

Dim ConvertString As range
Set ConvertString= range(string_range)

falsche Methode, das geht besser
13.09.2018 11:06:15
Daniel
Hi
wenn du Zellbereiche zusammenbringen willst, um sie gemeinsam bearbeiten zu können, ist der Adressstring ein möglicher Weg, aber kein besonders guter.
Die Hauptnachteile wären
- umständlich
- der Adressstring der Range-Funktion darf maximal 256 Zeichen lang sein, das schränkt die Anzahl der möglichen Zellbereiche stark ein.
besser ist es, die Zellbereiche direkt in einer Range-Variablen mit Union zusammen zu führen.
auch braucht man keine zusätzliche Variable, um zu prüfen ob eine Schleife vollständig durchlaufen wurde, dann dies kann man überprüfen, in dem man nach der Schleife den Schleifenzähler (i) mit dem Schleifenendwert (spalte_hinten_ende) vergleicht. Ist der Schleifenzähler größer als der Schleifendendwert, so wurde die Schleife vollständig durchlaufen, ist er kleiner oder gleich, wurde vorzeitig abgebrochen (bei neg. Step natürlich andersrum)
hier der Code:
Dim rngBereich As Range
For i = start_zeile + 10 To end_zeile Step 2
For k = spalte_hinten_start To spalte_hinten_ende
If Cells(i, k).Interior.ColorIndex  xlNone Then Exit For
Next k
If k > spalte_hinten_ende Then
If rngBereich Is Nothing Then
Set rngBereich = Rows(i)
Else
Set rngBereich = Union(rngBereich, Rows(i))
End If
End If
Next i
if not rngBereich is Nothing then rngBereich.Delete
Gruß Daniel
Anzeige
AW: falsche Methode, das geht besser
13.09.2018 13:29:48
Hannes
Hallo Daniel und alle anderen,
vielen Dank für die sehr schnelle Hilfe. Daniel, dein Code funktioniert perfekt. Er macht genau das, was er soll.
Was ich nicht ganz verstehe: Im Code wähle ich eine Zeile (z.B. 23) aus und in der anschließenden Range steht dann beispielsweise Zeile 23 und 24. Das ist genau das was ich will. Aber warum?
Vielen Dank nochmal.
Gruß
Hannes
AW: falsche Methode, das geht besser
13.09.2018 13:50:56
Daniel
Hi
sorry ,versteh ich nicht.
Gruß Daniel

6 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige