【问题标题】:Excel VBA loop macro for each selected cell每个选定单元格的 Excel VBA 循环宏
【发布时间】:2015-01-26 15:02:51
【问题描述】:

我有一个宏,可以简单地更改选定行中单元格的值。

Cells(Application.ActiveCell.Row, 20).Select
ActiveCell.Value = "withdraw"

但是我希望能够选择多行,不一定是连续的,例如从以下示例中选择 A1、A3 和 A4,并让宏更改每个选择单元格的列 B,

    A        B  
1 Brian
2 James
3 Jenny
4 Frank
5 Tim

变成

    A        B  
1 Brian   Withdraw
2 James
3 Jenny   Withdraw
4 Frank   Withdraw
5 Tim

我将如何从选定范围中获取活动行并为每一行循环宏?

【问题讨论】:

  • 可以通过算法确定所需的单元格(遵循某种模式),还是随机的?
  • 您希望如何识别要对其执行操作的单元格?
  • 它们将是随机的,通过按住 ctrl 选择。这个想法是能够选择一个名称列表并将每个选定的名称设置为“退出”,纯粹是为了逐行加快执行速度。

标签: vba excel


【解决方案1】:

这里有一个可能的解决方案:

Private Sub a()
    Dim sSel As String
    Dim aSel As Variant
    Dim rX As Range
    Dim i As Integer
    Dim j As Integer

    sSel = Selection.Address
    aSel = Split(sSel, ",")
    For i = 0 To UBound(aSel)
        Set rX = Application.ActiveCell.Parent.Range(CStr(aSel(i)))
        For j = 1 To rX.Rows.Count
            rX.Rows(j).EntireRow.Cells(1, 2) = "withdraw"
        Next
    Next
End Sub

请注意,这允许您选择任意位置以及每行任意数量的单元格。

【讨论】:

  • 谢谢您,但是它是否仅在某些版本的 Excel 或 VBA 中兼容,因为“Set rX = Me.Range”会抛出错误“无效使用 Me 关键字”?跨度>
  • @TimWilkinson 对不起,我的错误...以为您对 VBA 了解得更好...请参阅上面的编辑。
  • 我很抱歉,仍在学习路上,因此我的 OP 很简单!非常感谢您的帮助,正是我所追求的。
  • @TimWilkinson np,但您必须阅读“我”关键字。它与任何版本无关。
【解决方案2】:

这个简单的代码应该适合你:

Sub Button1_Click()
    Dim r As Range
    Set r = Selection
    r.Offset(, 1) = "Withdraw"
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多