为何vba代码可以运行,却不能在excel中显示结果出来?

程序如下:PrivateSubCommandButton4_Click()Dima(14,7)AsSingleFori=0To14Forj=0To7a(i,j)=Shee... 程序如下:
Private Sub CommandButton4_Click()
Dim a(14, 7) As Single
For i = 0 To 14
For j = 0 To 7
a(i, j) = Sheet2.cells(4 + i, 102 + 2 * j).Value
Select Case a(i, j)
Case Is > 0, Is < 3600
Sheet2.cells(4 + i, 102 + 2 * j).Value = 1
Case Is >= 3600, Is < 7800
Sheet2.cells(4 + i, 102 + 2 * j).Value = 2
Case Is >= 7800, Is < 12600
Sheet2.cells(4 + i, 102 + 2 * j).Value = 3
Case Is >= 12600, Is < 15000
Sheet2.cells(4 + i, 102 + 2 * j).Value = 4
End Select

Next j

Next i

End Sub
展开
 我来答
chenjin99
2012-04-27 · TA获得超过7061个赞
知道大有可为答主
回答量:1304
采纳率:100%
帮助的人:1880万
展开全部
我测试过了,结果如下:
1. 原代码可以运行;
2. 结果也是有的,只是存放在宏所在文件的 Sheet2 工作表中(注意:这个Sheet2有鬼);
3. 关键是:按原代码中的写法,上面所说的 Sheet2,它与工作表名称、与工作表顺序位置都没有关系;它并不是指名字叫“Sheet2” 的工作表,也不是顺序第2的工作表,而是在工作表创建时内置的一个不重复的ID号,一旦你删除一个工作表,它对应的这个内置ID号永远都不可能在这个工作簿中再得到(这个ID号在Excel中是看不到的,VBA可以得到,VBA编辑器的资源管理器中可以看到)。

如果楼主本意不是要用那个内置ID为 Sheet2 的工作表,而是想用名叫“Sheet2” 的工作表,建议这么修改下:把代码中的 Sheet2 替换成 Sheets("Sheet2")。这样,这个宏会对当前工作簿有效。

GoodLuck!
更多追问追答
追问
您好!按照您的说法,把代码中的 Sheet2 替换成 Sheets("Sheet2")之后,就会变成了“下表越界”。这还可以怎么改呢?
追答
报这个错,很可能是你的文件中根本不存在名称为Sheet2的工作表!

你检查一下,你要操作的工作表名字是什么嘛。
Sheets("Sheet2") 这表示对名叫Sheet2的工作表进行操作,如果你的工作表名是别的,就要把Sheet2 改为你实际的呀。
2724421
2012-04-27 · TA获得超过2493个赞
知道大有可为答主
回答量:1551
采纳率:71%
帮助的人:952万
展开全部
Sub test()
Dim a(14, 7) As Single
For i = 0 To 14
For j = 0 To 7
aa = Cells(4 + i, 102 + 2 * j).Address(0, 0)
a(i, j) = Sheet1.Cells(4 + i, 102 + 2 * j).Value
Select Case a(i, j)
Case 1 To 3599
Sheet1.Cells(4 + i, 102 + 2 * j).Value = 1
Case 3600 To 7799
Sheet1.Cells(4 + i, 102 + 2 * j).Value = 2
Case 7800 To 12599
Sheet1.Cells(4 + i, 102 + 2 * j).Value = 3
Case 12600 To 15000
Sheet1.Cells(4 + i, 102 + 2 * j).Value = 4
End Select
Next j
Next i
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式