选择您的 if 语句触发的单元格并在 vba 中选择该单元格

Posted

技术标签:

【中文标题】选择您的 if 语句触发的单元格并在 vba 中选择该单元格【英文标题】:Select the cell that your if statement triggers at and select that cell in vba 【发布时间】:2019-12-28 18:34:46 【问题描述】:

对 VBA 相当陌生。

我正在尝试在列中搜索特定值,然后选择该单元格以剪切和移动它。

我现在只有:

Dim cel As Range

Sub Opdaterstatus()

For Each cel In Range("H1:H100")
    If cel.value = "Fakturering" Then

        MsgBox (cel.value)

    End If

Next cel


End Sub

这会找到我想要的单元格,但 我的问题是针对实际单元格 if 语句触发。有希望并且很可能有一种简单的方法来实现这一目标。 MsgBox 纯粹用于测试目的。

【问题讨论】:

cel.cut看看range对象的属性和方法cel是那个类型 一旦循环发现一个值为“Fakturering”的单元格,它就是你的cel 变量。现在你可以用它做不同的事情。例如,您可以获取范围 cel.address,或者您可以复制并粘贴或剪切该范围。 谢谢你们——这给了我一些可以玩的东西! :) 【参考方案1】:

简单

Call Range("H1:H100").Find(What:="Fakturering").Cut(Destination:=Range("A1"))

其中“A1”是目标单元格的地址。

逻辑:在Range("H1:H100") 中执行Find(What:="Fakturering"),然后.Cut 找到单元格并将其粘贴到Destination:=Range("A1")

当然,您可以循环直到 .Find 变为 Nothing。不要忘记更改目的地...


是否可以在单元格左侧剪切预设数量的单元格?

没问题。

strAddress = Range("H1:H100").Find(What:="Fakturering").Address
Range(Range(strAddress), Range(strAddress).Offset(2, 1)).Cut Destination:=Range("A1")

逻辑:我们搜索值并获取找到的单元格的地址。然后我们得到一个矩形范围,其中左上角是单元格Range(strAddress),右下角是向下2行,向右1列Range(strAddress).Offset(2, 1)。我们将其剪切并粘贴到目的地。

【讨论】:

哇 - 谢谢!解释得很清楚。是否可以在单元格左侧剪切预设数量的单元格?例如:如果在单元格 A4 中找到“Fakturering”,但我还希望单元格 A1:A3 也被剪切和移动? 您可能希望在继续剪切之前检查 Range("H1:H100").Find(What:="Fakturering") 的存在,以避免在未找到 Fakturering 时出现任何错误,并且如果可能存在超过 1 个。 在下面查看我的解决方案 - 随时更正它(Y)【参考方案2】:

我最终执行了以下操作来选择单元格,以及该单元格左侧的其余数据:

Dim cel As Range

Sub Opdaterstatus()

For Each cel In Range("H1:H100")
    If cel.value = "Fakturering" Then

       Range(cel, cel.Rows.End(xlToLeft)).Cut

        cel.Offset(5, 0).Insert


    End If

Next cel


End Sub

【讨论】:

验证你的代码太难了。当Worksheet.UsedRange 中存在空单元格时,End(xlSome) 非常任性和任性。我看到它总是害怕。 cel.cut cel.Offset(5, 0) 我觉得可以,方法cut 有一个destination 参数

以上是关于选择您的 if 语句触发的单元格并在 vba 中选择该单元格的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?

vba中怎么遍历单元格中所有字符串

vba中怎么遍历单元格中所有字符串

Excel 公式或规则或 vba 比较 2 个单元格并仅突出显示差异

在gridview中查找行的单元格并在RowDataBound上执行某些操作

目标 C:如何突出显示 tableView 单元格并在重新加载表格时保持突出显示?