为何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 展开
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 展开
2个回答
展开全部
我测试过了,结果如下:
1. 原代码可以运行;
2. 结果也是有的,只是存放在宏所在文件的 Sheet2 工作表中(注意:这个Sheet2有鬼);
3. 关键是:按原代码中的写法,上面所说的 Sheet2,它与工作表名称、与工作表顺序位置都没有关系;它并不是指名字叫“Sheet2” 的工作表,也不是顺序第2的工作表,而是在工作表创建时内置的一个不重复的ID号,一旦你删除一个工作表,它对应的这个内置ID号永远都不可能在这个工作簿中再得到(这个ID号在Excel中是看不到的,VBA可以得到,VBA编辑器的资源管理器中可以看到)。
如果楼主本意不是要用那个内置ID为 Sheet2 的工作表,而是想用名叫“Sheet2” 的工作表,建议这么修改下:把代码中的 Sheet2 替换成 Sheets("Sheet2")。这样,这个宏会对当前工作簿有效。
GoodLuck!
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 改为你实际的呀。
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询