【问题标题】:Excel VBA: Using variable in loop to define a Range next to the current cellExcel VBA:在循环中使用变量来定义当前单元格旁边的范围
【发布时间】:2014-11-10 18:56:19
【问题描述】:

WorksheetA 我有一个列名 Config,

我想查找特定值,如果找到该值,则从另一个名为 WorksheetB 的工作表中复制相应的配置(这基本上是不同配置的索引/列表)

因此,在 WorksheetA 中找到值“J”,则范围 (D20:G31) 将等于 WorksheetB 范围(B15:E26) 的值以此类推,直到验证 WorksheetA 中该列中的所有值。

到目前为止我明显错误的代码是这样的

Public Sub CheckIndex()
     Sheets("Worksheet_A").Select
     ' Find the last row of data
     FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
     ' Loop through each row
     For x = 2 To FinalRow
     ' Decide if to copy based on column C
    ThisValue = Cells(x, 3).Value
        ' SinglePath Configuration
         If ThisValue = "J" Then
             Sheets("Worksheet_A").Range("D" & x & ":G" & x + 11).Value = Sheets("Worksheet_B").Range("B15:E26").Value

         ElseIf ThisValue = "C" Then
              Sheets("Worksheet_A").Range("D" & x & ":G" & x + 11).Value = Sheets("Worksheet_B").Range("B3:E14").Value
         End If

Next x

结束子

那么有没有办法在循环中使用变量的值来定义当前位置旁边的范围? 我的代码太糟糕了,我应该对此感到失望吗? jk(我已经知道它不好)

我最近才开始使用 VBA,因此我几乎没有编写宏的经验。所以提前感谢所有回复

【问题讨论】:

  • 试试x = 5 Worksheets("Sheet2").Range("B15:E26").Copy Destination:=Worksheets("Sheet1").Range("D" & x)
  • @ZAT 是的,非常感谢! (顺便说一句,这是我的第一个问题:我该如何回答?)
  • @Zegat:要么你建议 ZAT 将他的评论变成一个答案,否则你只是接受你自己的答案,并且肯定会支持 ZAT 的评论
  • @Zegad 很高兴它成功了。遵循 iDevlop 所说的。在上面支持我的评论并将您发布的内容标记为下面的答案。
  • @ZAT 我无法支持您的评论(我正在点击您评论旁边的箭头)但不知何故它不可用,我不知道是否与我成为一个相关的约束新用户...:/但是如果你愿意,复制我的答案(我会删除我的)并将你的答案标记为正确的,以便能够回馈你的帮助。

标签: vba excel


【解决方案1】:

正如@ZAT 提出的最终代码是:

Public Sub CheckIndex()

Sheets("Worksheet_A").Select
' Find the last row of data
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' Loop through each row
For x = 5 To FinalRow
    ' Decide if to copy based on column C
    ThisValue = Cells(x, 3).Value
' SinglePath Configuration
    If ThisValue = "J" Then

        Worksheets("Worksheet_B").Range("B15:E26").Copy Destination:=Worksheets("Worksheet_A").Range("D" & x)

    ElseIf ThisValue = "C" Then

        Worksheets("Worksheet_B").Range("B3:E14").Copy Destination:=Worksheets("Worksheet_A").Range("D" & x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多