【问题标题】:Loop through list and run code for every item (VBA)遍历列表并为每个项目运行代码(VBA)
【发布时间】:2019-09-25 10:14:07
【问题描述】:

我有一个名称列表,以及一些我想为每个名称运行的代码。 我的开始是这样的:

Dim cell As Range
For Each cell In Worksheets("Reference").Range("b2:b237")
[rest of my code here]
Next cell

问题是,我真正想做的是:

步骤 1) 从单元格 A1 的下拉列表中选择一个名称

第 2 步)还有很多其他单元格的公式引用了 A1

第三步)运行代码

步骤 4) 从 A1 的下拉列表中选择下一个名称,重复步骤 2 和 3,直到列表结束。

编辑:我在一个旧线程上发现了一些似乎适用于我正在做的事情:

Sub Macro1()
    Sheets("Sheet2").Activate
    Range("A1").Select

Do While True
    If Selection.Value = "" Then
        Exit Do
    Else
        Selection.Copy
        Sheets("Sheet1").Activate
        Range("A1").Activate
        ActiveSheet.Paste

        [rest of my code]

        Sheets("Sheet2").Activate
        Selection.Offset(1, 0).Select

    End If
Loop
End Sub

这应该可以完成工作,但是如果有人有更有效的方法,而不是将列表中的每个值复制并粘贴到单元格中,那也将非常有帮助!

谢谢。

【问题讨论】:

  • SO 不是免费的代码编写平台,请展示您为解决问题所做的一些尝试。还要尝试指定您要实现的确切目标,我很难理解您的代码应该做什么。
  • @looopa 是用户表单中的列表?
  • @Dorian 不是,它只是另一个工作表上的一列中的 200 行名称
  • @M.Schalk 感谢您的建议,我尝试了一些东西,但我还是个初学者,所以我认为它们可能是错误的,提出问题的最简单方法是保留它开放式.. 我正在努力改进 qn
  • 下拉菜单的名称从何而来?

标签: excel vba


【解决方案1】:

这将获取一个范围内的每个名称并按顺序将其放入一个单元格中 - 您需要进行编辑以将您的工作表名称和范围放入

Sub LoopThroughNames()
dim RangeWithNames as range
'define list of names - needs editing
set RangeWithNames = Worksheets("othersheetname").Range("range with names")
dim TargetCell as range
set TargetCell = worksheets("Sheet with calcs").Range("A1") 'top sheet, cell A1 edit as needed
dim r as range
for each r in RangeWithNames
      targetcell= r  'assign name into A1
'do your stuff
next r
End Sub

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2018-12-17
    • 2011-06-10
    • 2018-09-28
    相关资源
    最近更新 更多