在特定字符串元素后删除Range变量的部分

时间:2017-11-01 16:50:06

标签: vba range

我有一个范围变量(称为Constr),它基于看起来像这样的日期

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

目前我在整个范围内阅读全部4行。但我只对前两个感兴趣,' - '应该是我的门槛。

到目前为止,我尝试做的是遍历范围对象并检查“ - ”并将之前的所有内容复制到新的范围对象中。但它似乎没有用。

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   

有人可以告诉我如何将数据复制到新的范围对象中,还是有更好的方法可以在双击“ - ”后删除条目

编辑:部分解决方案

所以在使用VBA一段时间后,我找到了一个点,我删除了正确的行并最终得到了我想要的范围对象,但不幸的是它删除了我实际工作表中的行,而我只想要它们消失在我的范围对象中。

以下是我提出的代码:

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

如何将VBA引用回到工作表上的实际范围,我原本以为它正在处理内存中复制的数据?

1 个答案:

答案 0 :(得分:1)

然后这样的事情会删除你不想要的行。

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

这将更改您的命名范围: 设置nr =范围(“Constr”)

'给出一个绝对的参考: nr.RefersTo =“= Sheet1!$ A $ 2:$ C $”&amp; RW-1