【问题标题】:Dynamically selecting a specific cell using a loop使用循环动态选择特定单元格
【发布时间】:2019-05-14 23:43:33
【问题描述】:

下面是我的代码

Sub Append()
    'Append data from other files
    Path = "E:\NPM PahseIII\"
    Filename = Dir(Path & "*.xlsx")
    If InStr(Filename, ".") > 0 Then
        Filenamenoext = Left(Filename, InStr(Filename, ".") - 1)
    End If
    MsgBox Filenamenoext
    Range("A3").Select
    Do While Filename <> ""
        ActiveCell.Value = Filenamenoext
    Loop
End Sub

我的问题是,因为我选择了 Range("A3").Select 是硬编码的,我希望这个选择在循环中动态完成,这样当循环的第一次迭代开始时它应该选择 Range("A3").Select 并进一步选择下一个单元格在下一次迭代中。 我怎样才能做到这一点? 已编辑 见下图

【问题讨论】:

  • 您要在循环中选择的范围是多少?包括一张图片并显示您想要更新值的位置
  • @kooshy 立即查看图片。
  • 使用Range.End(xlUp).Offset(1) - 基本上找到列中最后填充的单元格并偏移1行。关于如何做到这一点的许多示例。
  • 从A3开始到哪里?你还没有回答问题。您要在此循环中更新哪些单元格。你想从 A3 开始 - 我明白了,但是你想更新多少个单元格
  • @kooshy 因为在我的循环中有 6 个文件要读取,我希望在读取每个文件时,单元格范围应该进入下一个单元格。为了在单独的单元格中写入每个文件名。

标签: excel vba loops


【解决方案1】:

像这样(未经测试):

Sub Append()

    Const FPath As String = "E:\NPM PahseIII\"
    Dim c As Range, Filename 

    'find the first empty cell in ColA
    Set c = activesheet.cells(rows.count, 1).end(xlup).offset(1, 0)

    Filename = Dir(FPath & "*.xlsx")
    Do While Filename <> ""
        c.Value = Split(Filename, ".")(0) 'note: problem if any of your file names have embedded periods...
        Set c = c.offset(1, 0)
        Filename = Dir()
    Loop

End Sub

【讨论】:

  • 您在实际提出问题的答案方面所做的工作值得一票。
  • 您还可以通过在循环中移动Set c = activesheet... 并消除Set c = c.offset 来简化,只是一个想法。
  • 是的可能会短几行,但想展示如何 (1) 获取对第一个空单元格的引用 (2) 使用 offset()“移动”该引用。全部没有选择/激活
  • 我同意。感谢您在实际代码中充实这一点。可惜我不能再投票了。
猜你喜欢
  • 2021-11-01
  • 2016-01-11
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多