如何用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
(这些语句不是我写的,是通过录制宏得到的。) 展开
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
(这些语句不是我写的,是通过录制宏得到的。) 展开
4个回答
展开全部
不用那么麻烦,也就是说不用复制,赋值就可以了.
另外,公式里有错误应该是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
另外,公式里有错误应该是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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Range(Cells(I, n)).Select
改成range("I" & n).select
当然建议你用楼上的方法,不过楼上的对初学者来说有点难度.
从录制宏学起是个不错的方法,那么应该掌握range("I" & n).select
这种写法.
改成range("I" & n).select
当然建议你用楼上的方法,不过楼上的对初学者来说有点难度.
从录制宏学起是个不错的方法,那么应该掌握range("I" & n).select
这种写法.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用select
For n = 1 To 4000
cells(1,n) =n
next
即可
For n = 1 To 4000
cells(1,n) =n
next
即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询