如何用VB在Excel里实现循环

单元格E1中的数值会因每次按F9键而变化,我想把每次变化得到的数值依次赋给单元格I1~I4000,我的VB语句如下:SubMacro1()''Macro1Macro''D... 单元格E1中的数值会因每次按F9键而变化,我想把每次变化得到的数值依次赋给单元格I1~I4000,我的VB语句如下:
Sub Macro1()
'
' Macro1 Macro
'

'
Dim n As Integer
For n = 1 To 4000 Step 1
Range("E1").Select
Selection.Copy
Range(Cells(I, n)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
End Sub

结果运行时提示说“应用程序定义或对象定义错误”。
请问如何修改以上程序?
逐语句调试时,被高亮的语句是“Range(Cells(I, n)).Select ”,

我不知道如何选定第I列第n行(n为程序中定义的n)的单元格,

修改为“Range("In").Select ”也不对,提示说“方法'Range'作用于对象'_Global'时失败”,

修改为“Cells(I, n).Select”也不对,提示仍然是“应用程序定义或对象定义错误”。

另外,由于单元格E1中含有公式,为了实现只将E1中的数值复制到选定的单元格,所以写了:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
(这些语句不是我写的,是通过录制宏得到的。)
展开
 我来答
home20010252
2009-01-04 · TA获得超过3319个赞
知道大有可为答主
回答量:1147
采纳率:0%
帮助的人:1196万
展开全部
不用那么麻烦,也就是说不用复制,赋值就可以了.
另外,公式里有错误应该是Range(Cells(n, 9),Cells(n, 9)).Select

Sub Macro1()
'
' Macro1 Macro
'

'
Dim n As Integer
For n = 1 To 4000 Step 1

Cells(n, 9).Value2 = Range("E1").Value2

Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hswwf
2009-01-04 · TA获得超过3543个赞
知道小有建树答主
回答量:1940
采纳率:100%
帮助的人:1472万
展开全部
Sub Macro1()
Dim n As Integer
For n = 1 To 4000
Cells(n, 12) = Cells(1, 5)
Next
End Sub
---------------------
就这一点代码就够了。
---------------
你的程序里有错误应该是
Range(Cells(n, 12),Cells(n, 12)).Select

range("l"&n).Select
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qad1103
2009-01-04 · TA获得超过1441个赞
知道大有可为答主
回答量:1180
采纳率:100%
帮助的人:1022万
展开全部
Range(Cells(I, n)).Select

改成range("I" & n).select

当然建议你用楼上的方法,不过楼上的对初学者来说有点难度.

从录制宏学起是个不错的方法,那么应该掌握range("I" & n).select

这种写法.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenxfsoft
2009-01-04 · TA获得超过1380个赞
知道大有可为答主
回答量:2418
采纳率:0%
帮助的人:1851万
展开全部
不用select
For n = 1 To 4000
cells(1,n) =n
next
即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式