【发布时间】:2013-01-02 22:33:48
【问题描述】:
我编写了一个相对简单的程序,旨在执行以下操作:
- 我的电子表格中有两列,B 和 C。两个数据集都从第 26 行开始
- B 包含项目的编号(例如项目 1),C 包含每个行项目的标识符,以便可以将多个服务分配给一个项目。然后,这两个变量的组合将形成每个订单项的唯一 ID(例如,项目 1 中第三项的 1/3)
- 每次在 B 列中输入新的项目 ID 时,C 列应重新从 1 开始
- 一旦项目列表完成,循环应该停止(第一个 if 条件)
- 我使用另一个过程按项目编号和另一个标准对数据集进行排序,这意味着我每次还必须重写 C 列
- 为了使代码更易于阅读,我创建了
ThisRow和LastRow
我的代码不会产生错误消息,但也不会返回所需的结果:单元格 C27 的值应该为 2,但它返回 1,并且同一列中下面的所有单元格都是空白的。这看起来很奇怪,因为在即时窗口中它们都得到了 1 的值(这仍然不正确,但与它打印到电子表格的不同)。
我已经尝试了一段时间来修复它,但我不知道错误可能出在哪里。非常感谢您的帮助!代码如下:
Sub DataSort()
Dim i As Object, ThisRow As Integer , LastRow As Integer
Range("C26").Value = 1
Range("C27").Activate
ThisRow = ActiveCell.Offset(0, -1).Value
LastRow = ActiveCell.Offset(-1, -1).Value
For Each i In Range("ProcessID")
If ThisRow = 0 Then
Exit Sub
ElseIf ThisRow > LastRow Then
ActiveCell.Value = ActiveCell.Offset(0, -1).Value + 1
Else
ActiveCell.Value = 1
End If
Debug.Print ActiveCell.Value
Next i
End Sub
>更新: 这是电子表格的屏幕截图;希望这会有所帮助:
【问题讨论】:
-
ThisRow和LastRow取自您手动设置值的单元格?由于您有足够的代表来发布图片,您能否向我们展示您在问题中描述的输入数据列的小示例屏幕截图(B、C ......等等) -
i 应该是 Range,ThisRow 和 LastRow 应该是 Long,并且 cmets 存在并且应该添加以使此代码易于理解。
-
感谢编辑;我现在已经上传了电子表格中的屏幕截图。
-
您没有在循环中的任何地方使用
i吗? -
不,他没有使用它,所以他只是一遍又一遍地激活同一个单元格。需要激活当前单元格(i)。 i.激活