问个vba初级问题

sitinl 2013-10-20 07:39:08
估计这个问题很多人会到googl上刮 一下然后就把答案粘上来。
我想说,我们是探讨问题,不是看结果。劝朋友们不要这样刮 一下粘贴上来好不好。
请教一下初级VBA。
说明:在text.xls文件中编写一个宏程序test,完成以下内容。打开当前目录下test1.xls文件,计算sheet1上单元格a1到a10的数据乘上(0-1)的随机数,计算结果保存在一个新建的sheet1的a1到a10。
代码:
Sub test()
Dim i As Integer, flag As Boolean, fm, temp
Dim aa As Object, bb As Object, cc As Object
'Application.ScreenUpdating = False
'Application.DisplayAlerts = False

Workbooks.Open ThisWorkbook.Path & "\test1.xls"
Set aa = ActiveWorkbook.Sheets("sheet1")


flag = False
Do While Not flag
fm = Application.GetOpenFilename(filefilter:="Excel files(*.xls),*.xls,all files(*.*),*.*")
If fm <> False Then
Workbooks.Open fm
Set bb = ActiveWorkbook
flag = True
End If
Loop

Workbooks.Add
Set cc = ActiveWorkbook
With cc.Sheets("sheet1")
For i = 1 To 10

temp = aa.Cells(i, 1) * Int((10 * Rnd) + 1) ʻ这一句编译不过提示说要object对象。
.Cells(i, 1) = temp
bb.Sheets(1).Cells(i, 1) = temp
Next
End With

flag = False
Do While Not flag
fm = Application.GetSaveAsFilename(filefilter:="Excel files(*.xls),*.xls,All files(*.*),*.*")
If fm <> False Then
cc.SaveAs fm
flag = True
End If
Loop

bb.Save
Set aa = Nothing: Set bb = Nothing: Set cc = Nothing

End Sub

...全文
583 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoyebin 2013-10-22
  • 打赏
  • 举报
回复
Set aa = ActiveWorkbook.Sheets("sheet1") Set cc = ActiveWorkbook 你这样永远也得不出结果的哇 建议你买本基础的VBA教材书,学习一下定义规范
夜鹰 2013-10-21
  • 打赏
  • 举报
回复
引用 1 楼 大雄 的回复:
我好久没弄VBA了,赶时间没认真看,里面的bb还没搞懂,按照你的要求我把你的代码改了一下,运行了几次没问题: Sub test() ......
神啊,你竟然还会回来
大雄 2013-10-20
  • 打赏
  • 举报
回复
我好久没弄VBA了,赶时间没认真看,里面的bb还没搞懂,按照你的要求我把你的代码改了一下,运行了几次没问题:
Sub test()
Dim i As Integer, flag As Boolean, fm, temp
'Dim aa As Object, bb As Object, cc As Object
Dim aa As Workbook, bb As Workbook, cc As Workbook
'Application.ScreenUpdating = False
'Application.DisplayAlerts = False

Workbooks.Open ThisWorkbook.Path & "\test1.xls"
'Set aa = ActiveWorkbook.Sheets("sheet1")
Set aa = ActiveWorkbook


'flag = False
'Do While Not flag
' fm = Application.GetOpenFilename(filefilter:="Excel files(*.xls),*.xls,all files(*.*),*.*")
' If fm <> False Then
' Workbooks.Open fm
' Set bb = ActiveWorkbook
' flag = True
' End If
'Loop


Workbooks.Add
Set cc = ActiveWorkbook
With cc.Sheets("sheet1")
For i = 1 To 10
temp = aa.Sheets("sheet1").Cells(i, 1).Value * Int((10 * Rnd) + 1) '?这一句编译不过提示说要object对象。
.Cells(i, 1).Value = temp
'bb.Sheets(1).Cells(i, 1).Value = temp
Next

End With

flag = False
Do While Not flag
fm = Application.GetSaveAsFilename(filefilter:="Excel files(*.xls),*.xls,All files(*.*),*.*")
If fm <> False Then
cc.SaveAs fm
flag = True
End If
Loop

'bb.Save
Set aa = Nothing: Set bb = Nothing: Set cc = Nothing

End Sub

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧