2017-11-01 3 views
0

ich eine Bereichsvariable (genannt Konstruktionsmat) haben, die auf Datum basiert, die wie diese lese ich bin im gesamten Bereichentfernen Teile des Bereichs variabel nach bestimmten Zeichenfolge Element

Type Bound1 Bound2 Var1 Var2 
X  1   2   3  4 
Y  1   2   3  4 
-- 
Z  1   2   3  4 

im Moment aussieht, alle 4 Linien. Aber ich bin nur an den ersten 2 interessiert, das "-" sollte an meiner Schwelle liegen.

Was ich bisher versucht habe ist, das Bereichsobjekt zu durchlaufen und nach dem "-" zu suchen und alles vorher in ein neues Bereichsobjekt zu kopieren. Aber es scheint nicht zu funktionieren.

Dim my_constr_range As Range 
Dim rngCell As Range 
For Each rngCell In Range("Constr") 
    If rngCell.Value = "--" Then 
     Set my_constr_range = Range(Cells(my_constr_range) & Cells(rngCell.Value)) 
    End If 
Next 

Kann mir jemand sagen, wie die Daten in einen neuen Bereich Objekt zu kopieren oder gibt es eine bessere Möglichkeit, die Einträge nach dem Doppelstrich zu entfernen „-“

EDIT: Teillösung

Nachdem ich eine Weile mit VBA herumgespielt habe, kam ich an einen Punkt, wo ich die richtigen Zeilen löschte und mit einem Range-Objekt endete, aber leider entfernte es die Zeilen in meinem eigentlichen Arbeitsblatt, während ich nur wollte, dass sie verschwanden mein Entfernungsobjekt. Hier

ist der Code, den ich kam mit:

Dim Lrange As Range 
Dim n As Long 
Set Lrange = Range("Constr") 

For n = Lrange.Rows.Count To 1 Step -1 
    If Lrange.Cells(n, 1).Value <> "--" Then 
     Lrange.Rows(n).Delete 
    ElseIf Lrange.Cells(n, 1).Value = "--" Then 
     Exit For 
    End If 
Next 

myitem("Constr") = Lrange.Value 

Wie VBA verweist zurück auf die tatsächliche Reichweite auf dem Arbeitsblatt, würde ich gedacht, es auf den kopierten Daten in einem Speicher arbeitet?

+0

Was versuchen Sie mit dieser Linie? Set my_constr_range = Bereich (Cells (my_constr_range) & Cells (rngCell.Value)) Der Wert von rngCell.value ist "-", wie soll das mit Cells() funktionieren? – mooseman

+0

Ich habe versucht, alle Elemente in ein neues Bereichsobjekt zu kopieren, bis zum Schlagen - oder als Alternative, wenn es einfacher ist, alles danach zuzuschneiden - – ThatQuantDude

Antwort

1

Dann löscht so etwas die Zeilen, die Sie nicht möchten.

'geben eine absolute Referenz Set nr = Range ("Konstruktionsmat"):

rw = Range("Constr").Find(What:="--", LookIn:=xlValues, LookAt:=xlWhole).Row 
lrw = Range("Constr").Rows.Count 
Rows(rw & ":" & lrw).Delete 

Dies wird Ihren Namen Bereich ändern nr.RefersTo = „= Sheet1 $ A $ 2: $ C $ "& rw-1

+0

Ich habe Ihre Lösung versucht, können Sie mir bitte weitere Informationen darüber geben, wie das funktioniert. rw ist die Zeilennummer, in der sich my - befindet, lrw sind die Zeilen, die in meiner Bereichsvariablen enthalten sind, wie würden Zeilen (rw: lrw) nur die ersten 3 Zeilen abdecken? Sagen wir rw = 100. Oder die wirkliche Frage ist, wie ich es wieder in meinem neuen Bereich speichern kann – ThatQuantDude

+0

Dies würde die Zeilen löschen, die Sie nicht möchten. – mooseman

+0

Ich habe meine Frage mit einer Zwischenlösung aktualisiert, die ich gefunden habe, aber es sieht so aus, als ob es mir keine tiefe Kopie meines Bereichs bringt und nur den Zeiger verwendet und daher den Inhalt auf dem Arbeitsblatt löscht und nicht nur in der Kopie des Objekt – ThatQuantDude

Verwandte Themen