VBA – 循环不会每次在ID列中增加一个

在我的VBA代码中,我试图做到以下几点:

  1. 将活动单元格设置为C11
  2. 将数字1添加到一个id
  3. 提示用户input名称,然后在右侧的单元格中input该名称
  4. 转到下一行并重复。

然而,input的数字是另一个,而不是2,3,4 ….

相反,我得到以下内容:

 1 Name 1 1 Name 2 1 Name 3 

而且我要:

 1 Name 1 2 Name 2 3 Name 3 

这里是代码,我错过了什么?

 Sub AddToSheet() Dim id As Integer Dim name As String Worksheets("sheet1").Activate ActiveCell.Range("C11").Select For Each mycell In Range("C11:C20") id = mycell.Select ActiveCell.Value = 1 id = id + 1 name = mycell.Offset(0, 1).Select name = InputBox("what is the film?") ActiveCell.Value = name Next mycell End Sub 

这不是你错过的东西,这是你错了 – 有些指针:

1)很less(我敢说,从不)需要使用。在Excel VBA中select,您可以直接访问对象的属性而不select实际的对象。 这通常被认为是不好的做法。

2) id = mycell.Select不是一个有效的语句,.Select方法只是把焦点设置到一个不用于返回值的对象上。

3) ActiveCell.Value = 1 < – 就你的问题而言,这是你错误的地方

4)你的代码在每个循环中增加了id的值,但实际上并没有将这个值用于任何东西 – 另一个暗示为什么它不像你期望的那样工作。

5)尝试并在代码中使用缩进,这将使您(和其他人)更容易遵循代码的逻辑,并帮助确保已closures所有“块”语句。

试试这个代码:

 Sub AddToSheet() Dim i As Integer For i = 11 To 20 Range("C" & i & ":D" & i).Value = Array(i - 10, InputBox("What is the film?")) Next i End Sub 

这会访问Range对象的.Value方法,而不用实际select或激活它,所以我们直接跳过几行代码。 其次 – 我已经使用了一个Array来分配值,这样我们就可以在一行代码中完成所有的工作 – 这不是什么突破性的,你不会看到任何速度/性能的差异,但是希望有一些东西给你看并可能在将来为您自己的使用而操纵。